From 0060d0fc0586ff0684ad22df7339a70c9b06b31f Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 5 Apr 2015 23:01:10 -0400 Subject: also allow creating MersenneTwister instances from full state --- src/random.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/random.rs b/src/random.rs index 64944b7..e99b085 100644 --- a/src/random.rs +++ b/src/random.rs @@ -55,6 +55,22 @@ impl SeedableRng for MersenneTwister { } } +impl SeedableRng<([u32; 624], usize)> for MersenneTwister { + fn reseed (&mut self, seed: ([u32; 624], usize)) { + let (state, index) = seed; + for i in 0..624 { + self.state[i] = state[i]; + } + self.index = index; + } + + fn from_seed (seed: ([u32; 624], usize)) -> MersenneTwister { + let mut mt = MersenneTwister::new_unseeded(); + mt.reseed(seed); + mt + } +} + impl Rand for MersenneTwister { fn rand (other: &mut R) -> MersenneTwister { MersenneTwister::from_seed(other.next_u32()) -- cgit v1.2.3-54-g00ecf