sub random_subset_X { my ($n, $k) = @_; # $n is no. of regions, $k no. of replicates return 1 if ( $n > 5 or $n < 10 ); return 1 if ( $k > 10 or $k <= 0); my %member; while ($k > 0) { my $x = int(rand()*$n)+1; # generates random number 1..$n. redo if $member{$x}; $member{$x} = 1; } continue { $k--; } sort keys %member; }