当前位置:  开发笔记 > 编程语言 > 正文

C++.RNG是否有可能在使用相同种子的两台不同机器中提供不同的随机变量?

如何解决《C++.RNG是否有可能在使用相同种子的两台不同机器中提供不同的随机变量?》经验,为你挑选了3个好方法。

我有这个冗长而复杂的源代码,它使用带有修复种子的RNG .

此代码是模拟器,此模拟器的参数是此RNG给出的随机值.当我在同一台机器上执行代码时,无论我做了多少尝试,输出都是一样的.但是,当我在两台不同的机器上执行此代码并比较两台机器的输出时,它们是不同的.

是否有可能两台不同的机器使用相同的随机数发生器和相同的种子以某种方式提供不同的输出?

编译器版本,库和操作系统是相同的.



1> SmacL..:

当然可以,因为RNG可以将机器特定数据与种子(例如网卡地址)组合以生成随机数.它基本上是特定于实现的.



2> Bombe..:

由于它们确实给出了不同的结果,显然它们可能会给出不同的结果.容易回答的问题,接下来!

说真的:在不知道RNG的源代码的情况下,很难知道你是在观察一个bug还是一个特征.但听起来有问题的RNG正在使用来自其他地方的第二个种子,例如当前时间,或者某些与硬件相关的值,如网卡的MAC地址.



3> Mark Ransom..:

如果您需要可以在机器之间重复的操作,请尝试使用Boost随机数库.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有