Pseudo-random numbers/Xorshift star: Difference between revisions

Content added Content deleted
(Added Sidef)
m (→‎{{header|Perl}}: added the "next_float" method)
Line 462: Line 462:
$self->{state} = $state;
$self->{state} = $state;
($state * 0x2545F4914F6CDD1D) >> 32 & (2**32 - 1);
($state * 0x2545F4914F6CDD1D) >> 32 & (2**32 - 1);
}

sub next_float {
my ($self) = @_;
$self->next_int / 2**32;
}
}
}
}
Line 472: Line 477:
say "\nSeed: 987654321, values histogram:";
say "\nSeed: 987654321, values histogram:";
$rng = Xorshift_star->new(seed => 987654321);
$rng = Xorshift_star->new(seed => 987654321);
$h{(5 * $rng->next_int($rng)) >> 32}++ for 1 .. 100_000;
$h{int 5 * $rng->next_float}++ for 1 .. 100_000;
say "$_ $h{$_}" for sort keys %h;</lang>
say "$_ $h{$_}" for sort keys %h;</lang>
{{out}}
{{out}}