How to generate an N-digit integer random number in C++

1 Answer

0 votes
#include <iostream>
#include <random>

long long generate_n_digit_number(int n) {
    if (n < 1) {
        throw std::invalid_argument("n must be a positive integer (>= 1).");
    }

    // For n=1, range is 0-9; for n>1, ensure no leading zeros
    long long lower_bound = (n > 1) ? static_cast<long long>(std::pow(10, n - 1)) : 0;
    long long upper_bound = static_cast<long long>(std::pow(10, n)) - 1;

    // Use random_device and mt19937 for randomness
    static std::random_device rd;
    static std::mt19937 gen(rd());
    std::uniform_int_distribution<long long> dist(lower_bound, upper_bound);

    return dist(gen);
}

int main() {
    try {
        std::cout << generate_n_digit_number(1) << "\n";
        std::cout << generate_n_digit_number(4) << "\n";
        std::cout << generate_n_digit_number(10) << "\n";
    } catch (const std::exception& e) {
        std::cerr << "Error: " << e.what() << "\n";
    }
}

 
  
/*
run:
  
8
7835
4551721080
  
*/

 



answered Nov 27, 2025 by avibootz
...