sub distinct_random_int { my($num, $start,$end) = @_; my ($range, %nums) = $end - $start; if ($num < $range) { $nums{$start + int rand $range} = undef while keys(%nums) < $num; return keys %nums; } else { return; } }