#!/usr/bin/perl -w use strict; srand; my $iters = $ARGV[0] ? $ARGV[0] : 10; my $sum = 0; my $numdice = 4; my $sides = 6; sub dice ($$) { my ($num,$sides) = @_; my @ret = (); my $min = $sides; for (1..$num) { my $roll = int(($sides)*rand)+1; $min = $roll < $min ? $roll : $min; push @ret, $roll; } # print "rolled [@ret]; min $min\n"; my $sum = 0; foreach (@ret) { $sum += $_ } return $sum - $min; } for (1..$iters) { $sum += dice($numdice,$sides); } # main loop print "average over $iters rolls is ".($sum/$iters)."\n";