我们如何在 ruby 中设置种子,以便任何依赖于 RNG 的函数都返回相同的结果(例如类似于 python 的random.seed() )?
要设置全局随机种子,您可以使用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)
一般来说,传递特定的随机状态会很有帮助,因为它使模拟和测试变得更加容易,并使函数效果保持在本地。
使用srand()
方法
srand(12345)
rand()
=> 0.9296160928171479
rand()
=> 0.3163755545817859
srand(12345)
rand()
=> 0.9296160928171479
rand()
=> 0.3163755545817859
Run Code Online (Sandbox Code Playgroud)