Gov*_*tor 3 c++ random cross-platform c++11
我正在开发手机游戏,因此我需要创造一种以绝对相同的方式玩同一关卡的可能性。这听起来很容易,因为我知道随机生成器的种子,为此它应该是相同的。
后来,当我std::mt19937与std::uniform_int_distribution许多教程一起使用时,出现了问题。因为它是在另外一个问题发现在这里,随机数的分布不是平台之间保持一致,而发动机是一致的(怎么会这样differenent,如果它是基于一种数学算法?)。
我在这个问题上没有特别注意,只是在std::mt19937没有分发的情况下使用。
如果对号码分配没有特殊要求,这是一种正确的用法吗?
std::mt19937产生在[0,2 32 -1] 范围内的统一随机数。它实现了Mersenne Twister算法,并保证在所有实现中均提供可重复的结果。
如果需要其他范围,则需要以某种方式将[0,2 32 -1] 减小到所需范围。std::uniform_int_distribution是执行此操作的便捷工具(但不能保证实现之间的可移植性)。