0

RUBY_VERSION=>1.8.7の値をダンプします

毎回、[1,3,5] .shuffleの値も[1,3,5]です。ランダムにするには、その前にsrand(Time.now.to_i)またはsrand()を追加する必要があります。 .. srandは自動的に呼び出されると思いましたか?しかし、おそらく.cgi環境ではありませんか?

irbを使用し、[1,3,5] .shuffleを確認して終了し、irbを再入力すると、結果が異なります。

ちなみに、ri shuffle何も与えていませんでした、そして配列と列挙可能なドキュメントはシャッフルまたはシャッフルをリストしていませんでした!また... ?

4

1 に答える 1

0

変更の有無を確認する方法がわからないので、はっきりとは言えませんが、変更の有無を確認する方法が問題になると思います。シャッフルを使用する場合、元の配列は変更されません。したがって、返された結果ではなく元の配列の値を確認すると、メソッドは毎回同じ値を返しているように見えます。

RUBY_VERSION    # => "1.8.7"

a = [1,3,5]

# a does not change, because shuffle does not mutate
a.shuffle       # => [5, 1, 3]
a               # => [1, 3, 5]

# now a does change, because shuffle! does mutate
a.shuffle!  # => [5, 3, 1]
a           # => [5, 3, 1]

また、ここにドキュメントがありますhttp://ruby-doc.org/core-1.8.7/classes/Array.html#M000335

于 2010-06-27T11:21:07.133 に答える