permoot/rand_impl.rs
1use rand::distributions::{Distribution, Standard};
2use rand::seq::SliceRandom;
3use rand::Rng;
4
5use crate::util::range_array;
6use crate::Permutation;
7
8impl<const N: usize> Distribution<Permutation<N>> for Standard {
9 fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Permutation<N> {
10 let mut arr_repr = range_array();
11
12 arr_repr.shuffle(rng);
13
14 Permutation { arr_repr }
15 }
16}