equal
deleted
inserted
replaced
2 circular_buffer: [u32; 64], |
2 circular_buffer: [u32; 64], |
3 index: usize, |
3 index: usize, |
4 } |
4 } |
5 |
5 |
6 impl LaggedFibonacciPRNG { |
6 impl LaggedFibonacciPRNG { |
7 fn new(init_values: &[u8]) -> Self { |
7 pub fn new(init_values: &[u8]) -> Self { |
8 let mut buf = [0xa98765 + 68; 64]; |
8 let mut buf = [0xa98765 + 68; 64]; |
9 |
9 |
10 for i in 0..std::cmp::min(init_values.len(), 54) { |
10 for i in 0..std::cmp::min(init_values.len(), 54) { |
11 buf[i] = init_values[i] as u32; |
11 buf[i] = init_values[i] as u32; |
12 } |
12 } |
32 |
32 |
33 self.circular_buffer[self.index] |
33 self.circular_buffer[self.index] |
34 } |
34 } |
35 |
35 |
36 #[inline] |
36 #[inline] |
37 fn get_random(&mut self, modulo: u32) -> u32 { |
37 pub fn get_random(&mut self, modulo: u32) -> u32 { |
38 self.get_next(); |
38 self.get_next(); |
39 self.get_next() % modulo |
39 self.get_next() % modulo |
40 } |
40 } |
41 |
41 |
42 #[inline] |
42 #[inline] |
43 fn add_randomness(&mut self, value: u32) { |
43 pub fn add_randomness(&mut self, value: u32) { |
44 self.index = (self.index + 1) & 0x3f; |
44 self.index = (self.index + 1) & 0x3f; |
45 self.circular_buffer[self.index] ^= value; |
45 self.circular_buffer[self.index] ^= value; |
46 } |
46 } |
47 } |
47 } |
48 |
48 |