diff --git a/bins/inbreeding/src/random.rs b/bins/inbreeding/src/random.rs index 8593049f05550f136ac7af8aac0ebaa144e949e6..d5cb9276b7efd99979a95e20d11e5a4c5cab6a7c 100644 --- a/bins/inbreeding/src/random.rs +++ b/bins/inbreeding/src/random.rs @@ -1,6 +1,7 @@ -use rand::{Rng, RngCore}; +use rand::{seq::SliceRandom, Rng, RngCore}; use std::collections::HashSet; +#[allow(dead_code)] fn draw_unique_indices(n: usize, vec_len: usize, rng: &mut impl RngCore) -> HashSet<usize> { let mut indices = HashSet::new(); @@ -17,9 +18,8 @@ pub(super) fn draw_unique_elements<T: Clone>( n: usize, rng: &mut impl RngCore, ) -> Vec<T> { - let mut res = vec![]; - for i in draw_unique_indices(n, things.len(), rng) { - res.push(things[i].clone()); - } - res + let mut things = things.to_vec(); + things.shuffle(rng); + + things.iter().take(n).cloned().collect() }