# generate numbers as from one Italian lottery machine # and pays attention to ritardi above 152 $n=90; $k=5; $trials=0; $p=(17/18)**10; $q=1-$p; $sd=sqrt($p*$q); $mu=$p; for (1..$n) { $delay[$_]=0; } $iteration=0; while (1) { $avail=$n; $need=$k; $consider=1; $currentbest=0; while ($avail>0) { if (rand()<$need/$avail) { if ($delay[$consider]>151 && $delay[$consider]<162) { $ritardisti++; $flag=1; } if ($delay[$consider]>161) { $matematici++; $flag=1; } $delay[$consider]=0; $need--; } else { $delay[$consider]++; if ($delay[$consider]==152) { $trials++; } } $consider++; $avail--; } $iteration++; if ($flag==1) { print "Iterazione: ".$iteration."\tTrials: ".$trials."\n"; print "ritardisti: ".$ritardisti/$trials."\tmatematici: ".$matematici/$trials; if ($matematici+$ritardisti<$trials) { print " (+ unfinished)"; } print "\n"; $z=($matematici/$trials-$mu)/($sd/sqrt($trials)); print "Z= ".$z."\n\n"; } $flag=0; }