summaryrefslogtreecommitdiffstats
path: root/src/rand.rs
blob: f9aee465d98a9f19fbf4366e4114a8d405129815 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pub struct Gen {
    state: i64,
}


pub fn new(seed: i64) -> Gen {
    Gen{
        state: seed,
    }
}

impl Gen {
    pub fn rand(&mut self, max: i32) -> i32 {
        self.state = self.state.wrapping_mul(6364136223846793005).wrapping_add(1);
        (self.state >> 33 & 0x7fffffff) as i32 % max
    }
}