osom_lib_rand/randomness_sources/
constant_randomness_source.rs1use crate::number::Number;
2use crate::pseudo_random_number_generators::LinearCongruentialGenerator;
3use crate::traits::RandomnessSource;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
12#[must_use]
13#[repr(transparent)]
14pub struct ConstantRandomnessSource<ANumber: Number> {
15 generator: LinearCongruentialGenerator<ANumber>,
16}
17
18impl<ANumber: Number> ConstantRandomnessSource<ANumber> {
19 pub fn new(seed: ANumber) -> Self {
21 Self {
22 generator: LinearCongruentialGenerator::new(seed),
23 }
24 }
25}
26
27impl<ANumber: Number> RandomnessSource for ConstantRandomnessSource<ANumber> {
28 type TNumber = ANumber;
29
30 fn next_number(&mut self) -> Self::TNumber {
31 self.generator.next_value()
32 }
33}
34
35impl<ANumber: Number> Default for ConstantRandomnessSource<ANumber> {
36 fn default() -> Self {
37 Self::new(ANumber::ONE)
38 }
39}