Pseudo-random numbers/PCG32: Difference between revisions

Added 11l
No edit summary
(Added 11l)
Line 71:
* Show your output here, on this page.
 
 
=={{header|11l}}==
{{trans|Python}}
 
<lang 11l>T PCG32
UInt64 state, inc
 
F next_int()
V old = .state
.state = (old * 6364136223846793005) + .inc
V shifted = UInt32(((old >> 18) (+) old) >> 27)
V rot = UInt32(old >> 59)
R (shifted >> rot) [|] (shifted << (((-)rot + 1) [&] 31))
 
F seed(UInt64 seed_state, seed_sequence)
.state = 0
.inc = (seed_sequence << 1) [|] 1
.next_int()
.state += seed_state
.next_int()
 
F next_float()
R Float(.next_int()) / (UInt64(1) << 32)
 
V random_gen = PCG32()
random_gen.seed(42, 54)
L 5
print(random_gen.next_int())
 
random_gen.seed(987654321, 1)
V hist = Dict(0.<5, i -> (i, 0))
L(i) 100'000
hist[Int(random_gen.next_float() * 5)]++
print(hist)</lang>
 
{{out}}
<pre>
2707161783
2068313097
3122475824
2211639955
3215226955
[0 = 20049, 1 = 20022, 2 = 20115, 3 = 19809, 4 = 20005]
</pre>
 
=={{header|Ada}}==
Line 183 ⟶ 227:
4 : 20005
</pre>
 
 
=={{header|ALGOL 68}}==
1,481

edits