sub pick_n { my($n,$from,$to) = @_; my(@picked); for(my $i=$from;$i<=$to;$i++) { if(rand(1) <= ($n/($to-$i+1))) { push(@picked,$i); $n--; } } return @picked; }