【发布时间】:2019-08-14 12:17:24
【问题描述】:
我正在开发一款手机游戏,我需要创造一种以完全相同的方式玩同一关卡的可能性。这听起来很简单,因为我知道随机生成器的种子,为此目的应该是相同的。
这个问题后来出现了,当我在许多教程中使用std::mt19937 和std::uniform_int_distribution 时。正如在另一个问题here 中注意到的那样,平台之间的随机数分布并不一致,而引擎是一致的(如果它基于数学算法,它怎么可能不同?)。
我没有太注意这个问题,只是使用了std::mt19937,没有分发。
如果对号码分布没有特殊要求,是不是正确的使用方式?
【问题讨论】:
-
您始终可以编写自己的发行版,或从头开始编写整个伪随机生成器,这将在您的平台上保持一致。对于像手机游戏这样毫无意义的东西,我怀疑伪随机数生成的数学质量是否非常重要。
-
@SamVarshavchik 谢谢,我同意你的观点,即需要数字范围不大的手机游戏不需要高数学质量。
-
相关/可能是骗子:stackoverflow.com/q/38367976/4342498
标签: c++ c++11 random cross-platform