scarlet_queen_initializer/
group.rs1use rand::{
2 distr::{Distribution, StandardUniform},
3 rng,
4 rngs::ThreadRng,
5};
6use scarlet_queen_core::{
7 group::InitializerTrait,
8 pokemon_type::{PokemonTypeAll, PokemonTypeTrait},
9};
10
11#[derive(Debug, Clone, Default)]
12pub struct Initializer {
13 pub group: Vec<PokemonTypeAll>,
14}
15
16impl Initializer {
17 pub fn gen_random(&mut self, size: usize) {
18 let mut rng = rng();
19 self.group = StandardUniform.sample_iter(&mut rng).take(size).collect();
20 }
21}
22
23pub struct InitializerSample<const N: usize> {}
24
25impl<P, const N: usize> InitializerTrait<P, N> for InitializerSample<N>
26where
27 P: PokemonTypeTrait,
28{
29 fn initialize() -> [P; N] {
30 let mut rng: ThreadRng = rng();
31 [0; N].map(|_| <P as PokemonTypeTrait>::sample(&mut rng))
32 }
33}