Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,40 @@
|
|||
MASK64 = (1 << 64) - 1
|
||||
C1 = 0x9e3779b97f4a7c15
|
||||
C2 = 0xbf58476d1ce4e5b9
|
||||
C3 = 0x94d049bb133111eb
|
||||
|
||||
|
||||
|
||||
class Splitmix64():
|
||||
|
||||
def __init__(self, seed=0):
|
||||
self.state = seed & MASK64
|
||||
|
||||
def seed(self, num):
|
||||
self.state = num & MASK64
|
||||
|
||||
def next_int(self):
|
||||
"return random int between 0 and 2**64"
|
||||
z = self.state = (self.state + C1) & MASK64
|
||||
z = ((z ^ (z >> 30)) * C2) & MASK64
|
||||
z = ((z ^ (z >> 27)) * C3) & MASK64
|
||||
answer = (z ^ (z >> 31)) & MASK64
|
||||
|
||||
return answer
|
||||
|
||||
def next_float(self):
|
||||
"return random float between 0 and 1"
|
||||
return self.next_int() / (1 << 64)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
random_gen = Splitmix64()
|
||||
random_gen.seed(1234567)
|
||||
for i in range(5):
|
||||
print(random_gen.next_int())
|
||||
|
||||
random_gen.seed(987654321)
|
||||
hist = {i:0 for i in range(5)}
|
||||
for i in range(100_000):
|
||||
hist[int(random_gen.next_float() *5)] += 1
|
||||
print(hist)
|
||||
Loading…
Add table
Add a link
Reference in a new issue