sub distinct_random_int { my ($num, $start, $end) = @_; my @rand; my @avail = $start..$end; push @rand, splice(@avail, rand(@avail), 1) for 1..$num; @rand; }