我有这个冗长而复杂的源代码,它使用带有修复种子的RNG .
此代码是模拟器,此模拟器的参数是此RNG给出的随机值.当我在同一台机器上执行代码时,无论我做了多少尝试,输出都是一样的.但是,当我在两台不同的机器上执行此代码并比较两台机器的输出时,它们是不同的.
是否有可能两台不同的机器使用相同的随机数发生器和相同的种子以某种方式提供不同的输出?
编译器版本,库和操作系统是相同的.
当然可以,因为RNG可以将机器特定数据与种子(例如网卡地址)组合以生成随机数.它基本上是特定于实现的.
由于它们确实给出了不同的结果,显然它们可能会给出不同的结果.容易回答的问题,接下来!
说真的:在不知道RNG的源代码的情况下,很难知道你是在观察一个bug还是一个特征.但听起来有问题的RNG正在使用来自其他地方的第二个种子,例如当前时间,或者某些与硬件相关的值,如网卡的MAC地址.
如果您需要可以在机器之间重复的操作,请尝试使用Boost随机数库.