为什么随机在Ruby中这样工作?

时间:2017-02-07 13:02:55

标签: ruby random

我试图巧妙地确定性地选择随机的东西,并发现了这个:

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#无法重现这一点。

1 个答案:

答案 0 :(得分:11)

你可能会对这个感到失望。我们来看看rand

的输出
irb(main):001:0> Random.rand
0.5739704645347423

这是[0,1]范围内的数字。 Random.new接受整数种子。

irb(main):002:0> Random.new(5.5) == Random.new(5)
true

神秘解决了!