[问题] 从array中随机取得n个不重复元素

楼主: peter0726 (江 谢)   2014-11-03 16:46:14
各为版友大家好
小弟有个问题,如标题所述
现在想写一个功能
大致上就是随机从n个数字中取出m个不重复的数字
目前写出来的可以正确执行
可是当数字大的时候就会执行颇久的
想请教各位有没有更有效率的写法0.0?
目前的程式码如下
sub randpick {
my $max = shift;
my $need = shift;
my %pick;
my @picked = keys %pick;
while (@picked < $need) {
my $num = int(rand($max));
$pick{$num} = 1;
@picked = sort{$a <=> $b} (keys %pick);
}
return %pick;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com