Pseudo-random numbers/Xorshift star: Difference between revisions
Content added Content deleted
No edit summary |
Alextretyak (talk | contribs) (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}}== |