sub h { my $n = shift; if ($n<$r) { return 1; } if ($n==$r) { return 1-$q; } if (defined $h[$n]) { return $h[$n]; } else { #$t2=h($n-$r-1); #$t1=h($n-1); #$h[$n] = $t1 - $t2*$pq; $h[$n] = h($n-1) - h($n-$r-1)*$pq; if ($h[$n]<0) { $h[$n]=0; } return $h[$n]; } } $max=shift; open COIN, ">coin${max}.txt"; open WHEEL, ">wheel${max}.txt"; open LOTTO, ">lott${max}.txt"; $p=1/18; for $r (1..$max+1) { @h=(); $q=(17/18)**$r; $pq=$p*$q; $prob=h($max); $w=$r-1; print COIN $w." ".$prob."\n"; $prob2=h($max)**90; print WHEEL $w." ".$prob2."\n"; $prob3=h($max)**900; print LOTTO $w." ".$prob3."\n"; print $w."\n"; } close COIN; close WHEEL; close LOTTO;