Pseudo-random numbers/Xorshift star: Difference between revisions

Added Sidef
m (→‎{{header|Perl}}: made Xorshift_star a real class, allowing the creation of multiple objects with different states)
(Added Sidef)
Line 717:
3: 20,031
4: 20,007
</pre>
 
=={{header|Sidef}}==
{{trans|Perl}}
<lang ruby>class Xorshift_star(state) {
 
define (
mask32 = (2**32 - 1),
mask64 = (2**64 - 1),
)
 
method next_int {
state ^= (state >> 12)
state ^= (state << 25 & mask64)
state ^= (state >> 27)
(state * 0x2545F4914F6CDD1D) >> 32 & mask32
}
}
 
say 'Seed: 1234567, first 5 values:';
var rng = Xorshift_star(1234567)
say 5.of { rng.next_int }
 
say "\nSeed: 987654321, values histogram:";
var rng = Xorshift_star(987654321)
var histogram = Bag(1e5.of { (5*rng.next_int) >> 32 }...)
histogram.pairs.sort.each { .join(": ").say }</lang>
{{out}}
<pre>
Seed: 1234567, first 5 values:
[3540625527, 2750739987, 4037983143, 1993361440, 3809424708]
 
Seed: 987654321, values histogram:
0: 20103
1: 19922
2: 19937
3: 20031
4: 20007
</pre>
 
2,747

edits