我想提供一个数字,然后收到一组随机数。但是,我希望这些数字是相同的,无论我在哪台计算机上运行它(假设我提供相同的种子)。
基本上我的问题是:在 C++ 中,如果我使用rand()
,但供应srand()
使用用户定义的种子而不是当前时间,我是否能够在任何计算机上生成相同的随机数流?
有几十个PRNG http://en.wikipedia.org/wiki/Pseudorandom%5Fnumber%5Fgenerator可以作为库使用。选一个。我倾向于使用梅森扭转者 http://en.wikipedia.org/wiki/Mersenne_twister.
通过使用外部提供的库,您可以避免语言库实现奇怪或有错误的风险rand()
。只要您的平台都符合相同的数学语义,您就会得到一致的结果。
MT 是我的最爱,因为我是一名物理学家,我将这些东西用于蒙特卡洛,其中保证高维度的均匀分布非常重要。但不要将 MT 用作加密 PRNG!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)