#!/usr/bin/perl -w # Blum Blum Shub random number generator # # 2014-03-02 use strict; my $x = 3; #my $m = 8999 * 9001; # Period = 5102 #my $m = 11117 * 11119; # Period = 794 #my $m = 13337 * 13339; # Period = 14997 #my $m = 11117 * 47777; # Period = 49241 #my $m = 32717 * 32719; # Period = 245342 my $m = 10007 * 11117; # Period = 330134 my %seen = (); my @freq = (0, 0, 0, 0); for(my $i = 0; $i < 1000000; $i++) { if( exists $seen{$x} ) { print "Period = $i\n"; last; } $seen{$x} = 1; $freq[$x % 4]++; $x = ($x * $x) % $m; } for(my $i = 0; $i < 4; $i++) { print "freq[$i] = $freq[$i]\n"; }