-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrng_test.py
More file actions
43 lines (31 loc) · 964 Bytes
/
rng_test.py
File metadata and controls
43 lines (31 loc) · 964 Bytes
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
RNG_MAX = 32767
class Rng(object):
def __init__(self, seed, master):
self.seed = seed
self.master = master
def next(self):
m = 2147483648
a = 214013
c = 2531011
self.seed = (a * self.seed + c) % m
self.seed = self.seed % 4294967296 # reflect the overflow of a unsigned long
# print(self.seed, self.seed >> 16)
return self.seed >> 16
def rngN110(self, max):
x = self.next()
result = int(int(x * max) / RNG_MAX)
result %= 4294967296 # reflect the overflow of a unsigned int
return result
def rngNMaster(self, max):
return self.next() % max
def rngN(self, max):
if self.master:
return self.rngNMaster(max)
else:
return self.rngN110(max)
if __name__ == '__main__':
rng = Rng(24, True)
for x in range(80000):
y = rng.rngN(80)
if y >= 80:
print(y)