[Ruby]sortメソッドでハッシュ(Hash)をランダムにソートするには?

Ruby

どうも、ちょげ(@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}

コメント

タイトルとURLをコピーしました