[問題] 從array中隨機取得n個不重複元素
各為版友大家好
小弟有個問題,如標題所述
現在想寫一個功能
大致上就是隨機從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;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.150.166
※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1415004377.A.86D.html
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章