| mod map; | |
| mod set; | |
| /// XorShiftRng | |
| struct DeterministicRng { | |
| x: u32, | |
| y: u32, | |
| z: u32, | |
| w: u32, | |
| } | |
| impl DeterministicRng { | |
| fn new() -> Self { | |
| DeterministicRng { | |
| x: 0x193a6754, | |
| y: 0xa8a7d469, | |
| z: 0x97830e05, | |
| w: 0x113ba7bb, | |
| } | |
| } | |
| fn next(&mut self) -> u32 { | |
| let x = self.x; | |
| let t = x ^ (x << 11); | |
| self.x = self.y; | |
| self.y = self.z; | |
| self.z = self.w; | |
| let w_ = self.w; | |
| self.w = w_ ^ (w_ >> 19) ^ (t ^ (t >> 8)); | |
| self.w | |
| } | |
| } |