[問題] 從array中隨機取得n個不重複元素

看板Perl作者 (江 謝)時間9年前 (2014/11/03 16:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
各為版友大家好 小弟有個問題,如標題所述 現在想寫一個功能 大致上就是隨機從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
文章代碼(AID): #1KLq3PXj (Perl)
文章代碼(AID): #1KLq3PXj (Perl)