配列の内容をシャッフル
class Array def swap!(a,b) self[a], self[b] = self[b], self[a] self end def shuffle!() (1..size-1).each {|n| swap!( n, rand(n+1))} self end end a = (1..10).map {|x| x} p a.shuffle! #=> [6, 8, 7, 3, 10, 9, 4, 5, 2, 1]
このコードはcくさいな.もっとruby風の書き方がありそうな.
1.9からshuffle!が追加されるの?
from 配列の中身をランダムに並び替える - gan2 の Ruby 勉強日記
a2 = a.sort_by{|i| rand }
なるほど.こんな方法もあるのか.
(追記:このコードだとrandが偶然にも同じ値を返すと偏りが発生するらしい)