10
は
私は確定的にランダムなものを選ぶことについての巧妙になろうとしており、この発見された。第二のためになぜRubyではランダムがうまくいくのですか?
irb(main):011:0> Random.new(Random.new(1).rand + 1).rand == Random.new(1).rand
=> true
irb(main):012:0> Random.new(Random.new(5).rand + 1).rand == Random.new(5).rand
=> false
irb(main):013:0> Random.new(Random.new(5).rand + 5).rand == Random.new(5).rand
=> true
を、私は「すごい、多分それは、乱数発生器の財産だ」と思ったが、PythonとC#はに失敗しますそれを再現する。
OPは、「ランダム」インスタンス間の平等をテストするのではなく、浮動小数点の間でテストすることに注意してください。あなたの説明IMHOに(小さな)ステップがありません。 –
@ EricDuminil:等価は同じ状態であることを指摘していたので、もちろん同じ乱数を生成します。 (a.is_a?Randomの 'a == b'は' a.rand == b.rand'を意味します。) – Ryan
あなたには分かりますが、OPやあなたの答えを読んでくる皆には分かりません。私は 'random.c'を見て、' Random'平等がどのように定義されているかを調べなければなりませんでした。私の2c $。 –