Pseudo-random numbers/Xorshift star: Difference between revisions

Added Perl
m (removed debug code from example)
(Added Perl)
Line 439:
3: 20031
4: 20007</pre>
 
=={{header|Perl}}==
<lang perl>use strict;
use warnings;
no warnings 'portable';
use feature 'say';
use Math::AnyNum qw(:overload);
 
{ package Xorshift_star;
 
our($state);
 
sub new { $state = $_[2] }
 
sub next_int {
$state ^= $state >> 12;
$state ^= $state << 25 & (2**64 - 1);
$state ^= $state >> 27;
($state * 0x2545F4914F6CDD1D) >> 32 & (2**32 - 1)
}
}
 
say 'Seed: 1234567, first 5 values:';
my $rng = Xorshift_star->new( seed => 1234567 );
say Xorshift_star->next_int($rng) for 1..5;
 
my %h;
say "\nSeed: 987654321, values histogram:";
$rng = Xorshift_star->new( seed => 987654321 );
$h{int 5 * Xorshift_star->next_int($rng)/2**32}++ for 1..100_000;
say "$_ $h{$_}" for sort keys %h;</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>
 
=={{header|Phix}}==
2,392

edits