# 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;

    }