Pseudo-random numbers/Xorshift star: Difference between revisions

Content added Content deleted
No edit summary
(Added 11l)
Line 83: Line 83:





=={{header|11l}}==
{{trans|Python}}

<lang 11l>T XorShiftStar
UInt64 state

F seed(seed_state)
.state = seed_state

F next_int() -> UInt32
V x = .state
x (+)= x >> 12
x (+)= x << 25
x (+)= x >> 27
.state = x
R (x * 2545'F491'4F6C'DD1D) >> 32

F next_float()
R Float(.next_int()) / 2.0^32

V random_gen = XorShiftStar()
random_gen.seed(1234567)
L 5
print(random_gen.next_int())

random_gen.seed(987654321)
V hist = Dict(0.<5, i -> (i, 0))
L 100'000
hist[Int(random_gen.next_float() * 5)]++
print(hist)</lang>

{{out}}
<pre>
3540625527
2750739987
4037983143
1993361440
3809424708
[0 = 20103, 1 = 19922, 2 = 19937, 3 = 20031, 4 = 20007]
</pre>


=={{header|Ada}}==
=={{header|Ada}}==