sub lotto { my $n = shift; my $need = shift; my $t=0; my %nums=(); while ($need>0) { $t=int(rand($n))+1; if (!defined $nums{$t}) { $nums{$t}=1; $need--; } } return keys %nums; } $p=1/18; $q=1-$p; $lq=log($q); while (1) { $flag=0; $n++; $samaritani=1.1*log(1/(5*$n))/$lq; #print $n." ".$samaritani." "; %seen=(); @nums=lotto(90,5); for (@nums) { $seen{$_}=1; } for (1..90) { if ($delay[$_]>$samaritani) { $trials++; $flag++; } if (defined $seen{$_}) { if ($delay[$_]>$samaritani) { $success++; } $delay[$_]=0; } else { $delay[$_]++; if ($delay[$_]>$max) { $max=$delay[$_]; } } } #print "$max\n"; #if ($max>$samaritani) { #print $n.": ".$max.">".$samaritani."\n"; #} if ($trials>0 && $flag==1) { $win_prob=$success/$trials; print $n." ".$win_prob."\n"; } }