我可以在不指定数字分布的情况下使用随机生成器吗?



我正在开发一款手机游戏,我需要创造一种以完全相同的方式玩相同关卡的可能性。这听起来很容易,因为我知道随机生成器的种子,为此目的应该是一样的。

后来出现了这个问题,当我在许多教程中将std::mt19937std::uniform_int_distribution一起使用时。正如在另一个问题中注意到的那样,平台之间的随机数分布不一致,而引擎是一致的(如果它基于数学算法,它怎么会有所不同?

我没有太注意这个问题,只是在没有发行版的情况下使用std::mt19937

如果对数字分配没有特殊要求,它是否是一种正确的使用方式?

std::mt19937产生 [0, 232-1] 范围内的统一随机数。它实现了Mersenne Twister算法,并保证在实现过程中提供可重复的结果。

如果您需要不同的范围,则需要以某种方式将 [0, 232-1] 减小到所需的范围。std::uniform_int_distribution是执行此操作的便捷工具(但不保证跨实现的可移植性)。

随机数生成器std::mt19937将为任何平台生成相同的值,但唉,标准允许std::uniform_int_distribution灵活。

所以你需要自己做改造,唉。

相关内容

最新更新