How to pick a random value from a map in Rust

1 Answer

0 votes
use rand::Rng;
use rand::rng;
use std::collections::HashMap;

fn get_random_value(input_map: &HashMap<i32, String>) -> Option<String> {
    let values: Vec<&String> = input_map.values().collect();

    if values.is_empty() {
        return None;
    }

    let mut rng_instance = rng();
    let index = rng_instance.random_range(0..values.len());

    Some(values[index].clone())
}

fn main() {
    let mut my_map = HashMap::new();
    my_map.insert(1, "C++".to_string());
    my_map.insert(2, "C".to_string());
    my_map.insert(3, "Java".to_string());
    my_map.insert(4, "C#".to_string());
    my_map.insert(5, "Rust".to_string());
    my_map.insert(6, "Python".to_string());

    match get_random_value(&my_map) {
        Some(random_value) => println!("Random value: {}", random_value),
        None => println!("Map is empty!"),
    }
}

   
     
/*
run:

Random value: Rust
   
*/

 



answered Jul 17, 2025 by avibootz

Related questions

2 answers 101 views
1 answer 87 views
1 answer 90 views
1 answer 113 views
1 answer 145 views
1 answer 96 views
...