How to generate an 8 digits random number in Rust

1 Answer

0 votes
use rand::{random_range};

/// Generates an 8-digit random integer between 10,000,000 and 99,999,999 (inclusive).
/// Guaranteed to start with a non-zero digit (1-9).
fn generate_8_digit_number() -> u32 {
    // Standard inclusive range syntax (min..=max)
    random_range(10_000_000..=99_999_999)
}

/// Generates an 8-character numeric string between "00000000" and "99999999".
/// Preserves leading zeros using format specifier `{:08}`, suitable for OTPs/PINs.
fn generate_8_digit_code() -> String {
    let raw_val: u32 = random_range(0..=99_999_999);
    format!("{:08}", raw_val)
}

fn main() {
    // Example 1: Standard 8-digit integer
    println!("--- 8-Digit Integers (10000000 to 99999999) ---");
    for _ in 0..5 {
        let num = generate_8_digit_number();
        println!("{}", num);
    }

    // Example 2: Formatted 8-digit string code (preserves leading zeros)
    println!("\n--- 8-Digit Codes / OTPs (00000000 to 99999999) ---");
    for _ in 0..5 {
        let code = generate_8_digit_code();
        println!("{}", code);
    }
}
   
     
/*
run:
 
--- 8-Digit Integers (10000000 to 99999999) ---
79978922
12938035
97646574
84157321
96819101

--- 8-Digit Codes / OTPs (00000000 to 99999999) ---
31569720
32600275
72466003
08023173
34338600
   
*/

 



answered Oct 7, 2024 by avibootz
edited Oct 2 by avibootz
...