どうも、ちょげ(@chogetarou)です。
sortメソッドでハッシュ(Hash)をランダムに並び替えてシャッフルする方法を紹介します。
方法

sortメソッドでハッシュ(Hash)をランダムに並び替えてシャッフルするには、randとto_hメソッドを使います。
まず、ハッシュのsortメソッドを呼び出します。
sortメソッドのブロックに「|a, b| rand <=> rand
」を指定します。
そして、sortメソッドからto_hメソッドを呼び出します。
#hash=対象のハッシュ
result = hash.sort {|a, b| rand <=> rand }.to_h
上記のto_hメソッドは、対象のハッシュ(Hash)をランダムにソートした結果を返します。
使用例
nums = {
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5,
}
result = nums.sort {|a, b| rand <=> rand }.to_h
p result
出力:
{"four"=>4, "five"=>5, "three"=>3, "one"=>1, "two"=>2}
コメント