Skip to main content

cardinal_kernel/util/
rng.rs

1use rand::{Rng, SeedableRng};
2use rand_pcg::Pcg64;
3
4pub struct GameRng {
5    rng: Pcg64,
6}
7
8impl GameRng {
9    pub fn new(seed: u64) -> Self {
10        Self {
11            rng: Pcg64::seed_from_u64(seed),
12        }
13    }
14
15    pub fn generate<T>(&mut self) -> T
16    where
17        rand::distributions::Standard: rand::distributions::Distribution<T>,
18    {
19        self.rng.r#gen()
20    }
21}