27 lines
615 B
Text
27 lines
615 B
Text
seed: 1234567$
|
|
|
|
splitmix64() := block(
|
|
mask64: 2^64-1,
|
|
c1: 11400714819323198485,
|
|
c2: 13787848793156543929,
|
|
c3: 10723151780598845931,
|
|
seed: bit_and(seed+c1, mask64),
|
|
z: seed,
|
|
z: bit_and(bit_xor(z, bit_rsh(z, 30))*c2, mask64),
|
|
z: bit_and(bit_xor(z, bit_rsh(z, 27))*c3, mask64),
|
|
bit_and(bit_xor(z, bit_rsh(z, 31)), mask64)
|
|
)$
|
|
|
|
splitmix64_float() := splitmix64()/(2^64)$
|
|
|
|
thru 5 do print(splitmix64());
|
|
|
|
block(
|
|
seed: 987654321,
|
|
counts: makelist(0, 5),
|
|
thru 100000 do(
|
|
res: floor(splitmix64_float()*5),
|
|
counts[res+1]: counts[res+1] + 1
|
|
),
|
|
counts
|
|
);
|