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

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

long long generate_n_digit_number(int n) {
    if (n < 1) {
        fprintf(stderr, "Error: n must be a positive integer (>= 1).\n");
        return -1;
    }
    
    srand((unsigned int)time(NULL));

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

    // rand() returns up to RAND_MAX, so scale properly
    long long range = upper_bound - lower_bound + 1;
    long long r = ((long long)rand() % range) + lower_bound;

    return r;
}

int main(void) {
    printf("%lld\n", generate_n_digit_number(1));
    printf("%lld\n", generate_n_digit_number(4));
    printf("%lld\n", generate_n_digit_number(10));

    return 0;
}


  
/* 
run:
   
3
3275
1389660109
 
*/

 



answered Nov 27, 2025 by avibootz
edited Nov 27, 2025 by avibootz
...