How to generate random Powerball lottery numbers (pick 5 numbers from 1-69 + 1 Powerball from 1-26) in Rust

1 Answer

0 votes
use rand::random_range;
use std::collections::HashSet;

/*
    Generate random Powerball lottery numbers:
        - 5 distinct numbers from 1–69
        - 1 distinct Powerball number from 1–26

    This version uses the modern rand 0.9+ API:
        - random_range() → idiomatic random integer generation
*/

/*
    generate_main_numbers():
    Generates 5 UNIQUE numbers in the range [1, 69].
    HashSet ensures uniqueness automatically.
*/
fn generate_main_numbers() -> Vec<u32> {
    let mut chosen: HashSet<u32> = HashSet::new();

    while chosen.len() < 5 {
        let n: u32 = random_range(1..=69); // idiomatic rand 0.9+
        chosen.insert(n);
    }

    // Convert to sorted Vec for nice output
    let mut nums: Vec<u32> = chosen.into_iter().collect();
    nums.sort_unstable();
    nums
}

/*
    generate_powerball():
    Generates a single number in the range [1, 26].
*/
fn generate_powerball() -> u32 {
    random_range(1..=26)
}

fn main() {
    let main_numbers: Vec<u32> = generate_main_numbers();
    let powerball: u32 = generate_powerball();

    println!("Random Powerball numbers:");
    print!("Main numbers: ");
    for n in &main_numbers {
        print!("{} ", n);
    }
    println!();
    println!("Powerball: {}", powerball);
}


/*
run:

Random Powerball numbers:
Main numbers: 3 17 22 62 65 
Powerball: 11

*/

 



answered Jul 30 by avibootz

Related questions

...