sub roll_dice { my ($low_end, $range) = @_; int(rand(int $range/2)) + int(rand(1 + $range - int $range/2)) + $low_end; } #### sub roll_dice { my ($low_end, $range, $dice) = @_; my $sidesneeded = $range + $dice - 1; my $r = 0; for (0..$dice-1) { my $sides = int($sidesneeded / ($dice-$_)); $sidesneeded -= $sides; $r += int(rand $sides); } $low_end + $r; }