これをもっときれいに行う方法があるかどうか知りたいです。基本的には、可変長の配列からランダムな要素を選択したいのです。通常は次のようにします。
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
複数の異なるサンプルが必要な場合に備えて、数値引数を受け入れます。