use strict; use warnings; sub trial($) { my $result; foreach (1..shift) { $result= $_ if rand($_) < 1; } return $result; } ############ my $trials= shift || 1000; my $size= shift || 20; my %results; for (1..$trials) { ++$results{trial($size)}; } # show the results for (1..$size) { printf "%5d: %5d\n", $_, ($results{$_} || 0); }