scarlet_queen_selector/
random.rs1use crate::{error::SelectorError, Selector};
2use rand::{rng, seq::IndexedRandom};
3
4impl Selector {
5 pub fn select_random(&mut self, remain: usize) -> Result<(), SelectorError> {
6 if self.group.is_empty() {
8 return Err(SelectorError::EmptyGroupError);
9 }
10 if remain == 0 || remain > self.group.len() {
12 return Err(SelectorError::OverflowGroupError);
13 }
14
15 self.size = self.group.len();
17
18 let mut rng = rng();
20 self.group = self
21 .group
22 .choose_multiple(&mut rng, remain)
23 .cloned()
24 .collect();
25 Ok(())
26 }
27}