use strict; use warnings; use List::Util qw(max sample); #use lib '/usr/local/share/perl/5.30.0'; #use Statistics::Basic::Stddev; #installs somewhere?? #use Statistics::Basic::StdDev; use Statistics::Basic qw(:all); use File::Slurp; #for large list of real randoms my @rands = read_file('../stats/bytes37Mb.txt'); my ($fertilewomen) = @ARGV; my @maxxes; my $cyclelength = 32; #my $duration = int(rand(1) + 0.5) == 1 ? 4 : 5; #my $duration = sample 1, (4, 5); $fertilewomen ||= 48; #print "duration is $duration\n"; #my @women; #for (1..100) { my @women; # for (1..48) { for (1..$fertilewomen) { # my $start = int(rand(31) + 0.5); # my $start = int(rand($cyclelength-1) + 0.5); # my $start = int(rand($cyclelength)); my $start = getrandom($_); # print "$start\n"; # my $range; # my $turnover = $cyclelength - $duration; # if ($start > 28) { # if ($start > $turnover) { # if ($start == 29) { # if ($start == $turnover+1) { # $range = [$start, $start+1, $start+2, 0]; # } elsif ($start == 30) { # } elsif ($start == $turnover+2) { # $range = [$start, $start+1, 0, 1]; # } else { # $range = [$start, 0, 1, 2]; # } # } else { # $range = [$start..$start+3]; # } # push @women, $range; # my $duration = sample 1, (4, 5); my $duration = 4; push @women, $start..($start+$duration-1); } my %count; my %mcount; for my $woman (@women) { # my @range = @{$woman}; # for (@range) { # my $moduluscyclelength = $_ % $cyclelength; my $moduluscyclelength = ($woman % $cyclelength); #print $moduluscyclelength, ' ', $woman, ' ', $cyclelength, "\n"; # $count{$_}++; $mcount{$moduluscyclelength}++; # $count{$woman}++; # } } my %occupancy; # for (0..31) { for (0..$cyclelength-1) { # my $value = exists $count{$_} ? $count{$_} : 0; my $mvalue = exists $mcount{$_} ? $mcount{$_} : 0; # $occupancy{$_} = $value; print "$_ $mvalue\n"; # print "$_ $value $mvalue\n"; } # print 'mean is ', mean(values %count), "\n"; # print 'sd is ', stddev(values %count), "\n"; # my %ostats; # for (values %occupancy) { # $ostats{$_}++; # } # for (sort { $a <=> $b } keys %ostats) { ## print $_, ' ', $ostats{$_}, "\n"; # } # push @maxxes, max(keys %ostats); #} #print join ' ', sort { $a <=> $b } @maxxes; sub getrandom { my $index = shift; my $byte = $rands[$index]; chomp $byte; return int($byte/8); }