blob: 79ccffe34d67c9405ca9ba839920e8ebc5c4bc06 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//! Xorshift64 random number generation
var state: u64 = 0x853C49E6748FEA9B;
pub fn set_seed(s: u64) void {
state = if (s == 0) 0x853C49E6748FEA9B else s;
}
pub fn next_u64() u64 {
state ^= state << 13;
state ^= state >> 7;
state ^= state << 17;
return state;
}
pub fn next_u32() u32 {
return @truncate(next_u64());
}
pub fn byte() u8 {
return @truncate(next_u64());
}
pub fn range(min: u64, max: u64) u64 {
return min + (next_u64() % (max - min + 1));
}
|