配列からランダムに選択するにはどうすればいいですか? 質問する

配列からランダムに選択するにはどうすればいいですか? 質問する

これをもっときれいに行う方法があるかどうか知りたいです。基本的には、可変長の配列からランダムな要素を選択したいのです。通常は次のようにします。

myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]

2 行目を置き換えるには、もっと読みやすく、シンプルな方法がありますか? それとも、それが最善の方法でしょうか。 を実行できると思いますmyArray.shuffle.firstが、SO で数分前に見たばかりで#shuffle、実際にはまだ使用していません。

ベストアンサー1

ただ使うだけArray#sample:

[:foo, :bar].sample # => :foo, or :bar :-)

これはRuby 1.9.1以降で利用可能です。以前のバージョンのRubyでも使用できるようにするには、require "backports/1.9.1/array/sample"

Ruby 1.8.7 では、残念な名前で存在することに注意してくださいchoice。これは後のバージョンで名前が変更されたため、使用しないでください。

この場合は役に立ちませんが、sample複数の異なるサンプルが必要な場合に備えて、数値引数を受け入れます。

おすすめ記事