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

1 Answer

0 votes
use rand::{Rng, SeedableRng};
use rand::rngs::StdRng;
use std::time::{SystemTime, UNIX_EPOCH};

fn generate_n_digit_number(n: usize) -> Result<u64, String> {
    if n < 1 {
        return Err("n must be a positive integer (>= 1).".to_string());
    }

    let lower_bound: u64 = if n > 1 {
        10u64.pow((n - 1) as u32)
    } else {
        0
    };
    let upper_bound: u64 = 10u64.pow(n as u32) - 1;
    
    let seed = SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .expect("Time went backwards")
        .as_nanos() as u64;

    let mut rng = StdRng::seed_from_u64(seed);

    let r = rng.random_range(lower_bound..=upper_bound);

    Ok(r)
}

fn main() {
    println!("{:?}", generate_n_digit_number(1).unwrap());
    println!("{:?}", generate_n_digit_number(4).unwrap());
    println!("{:?}", generate_n_digit_number(10).unwrap());
}



/*
run:

6
2841
5620598483

*/

 



answered Nov 27, 2025 by avibootz
...