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
*/