How to select random two digits from anywhere in a number with Rust

1 Answer

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

// Function to select random two distinct digits from a number
fn get_random_two_digits(number: i64) -> Result<String, &'static str> {
    let num_str = number.to_string();
    let chars: Vec<char> = num_str.chars().collect();

    if chars.len() < 2 {
        return Err("number must have at least 2 digits");
    }
    
    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 i = rng.random_range(0..chars.len());
    let mut j = rng.random_range(0..chars.len());
    while j == i {
        j = rng.random_range(0..chars.len());
    }

    Ok(format!("{}{}", chars[i], chars[j]))
}

fn main() {
    let num: i64 = 1234567;
    
    match get_random_two_digits(num) {
        Ok(random_two) => println!("Random two digits: {}", random_two),
        Err(e) => println!("Error: {}", e),
    }
}



/*
run:

Random two digits: 15

*/

 



answered Nov 26, 2025 by avibootz
...