なかだです。 At Fri, 1 Jul 2005 15:59:56 +0900, Hideo Konami wrote in [ruby-list:40891]: > 統計の無作為非復元抽出のシミュレーションのために,配列をシャッフル > する方法を考えていて,次のような処理を思いつきました。これまで > どんくさいやり方をしていたのに比べると(自分では)うまい方法だと > 思ったのですが,もっとうまいやり方はないものでしょうか。お付き合い > くださる方がおられましたら,よろしくお願いします。 結構定番の話題ですね。 > def shuffle(array) > s = [] > while array.size > 0 > p = rand(array.size) > s << array[p] > array.delete_at(p) > end Array#delete_atは取り除いた要素を返すので、単純化できます。 s << array.delete_at(rand(array.size)) until.array.empty? > return s > end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦