在 ruby​​ 中初始化随机数生成器(即设置种子)?

dss*_*dss 7 ruby random-seed

我们如何在 ruby​​ 中设置种子,以便任何依赖于 RNG 的函数都返回相同的结果(例如类似于 python 的random.seed() )

Sil*_*olo 8

要设置全局随机种子,您可以使用Kernel#srand. 这将影响将来对Kernel#rand全局随机数函数 的调用。

srand(some_number)
rand() # Should get consistent results here
Run Code Online (Sandbox Code Playgroud)

如果您想要局部随机性而不影响全局状态,那么您需要使用该类Random。此类的构造函数采用随机种子。

r = Random.new(some_number)
r.rand() # Should get same result as above
Run Code Online (Sandbox Code Playgroud)

一般来说,传递特定的随机状态会很有帮助,因为它使模拟和测试变得更加容易,并使函数效果保持在本地。


Ste*_*zyn 4

使用srand()方法

srand(12345)

rand() 
=> 0.9296160928171479
rand()
=> 0.3163755545817859

srand(12345)

rand() 
=> 0.9296160928171479
rand()
=> 0.3163755545817859
Run Code Online (Sandbox Code Playgroud)