c++ - C++ 11 中 Mersenne Twister 的最佳常量种子

标签 c++ c++11 random random-seed mersenne-twister

我的用例是:我需要随机数,但仅用于图形(不用于密码学)。我需要能够为 2 次渲染/运行获得相同的图像(结果)。例如,使用 time() 作为种子不会为下一次运行创建相同的结果。所以我需要一个常量种子。

Mersenne Twister 的文档说它不喜欢 0 作为种子,它也不喜欢某些位组合。对于这种情况,据说要进行多达 800000 次调用,直到它再次提供良好的随机数。出于速度原因,我不想花费 800000 次调用的开销。 理想情况下,我需要一些可以直接用作种子的可靠值。

最佳答案

只需选择您想要的任何数字即可。

您必须牢记的是,密码学专家和算法分析师用于“高质量随机性”的标准几乎肯定远远高于您的项目所需的标准,尤其是对于像 Mersenne 这样经过良好测试的算法 Tornado 。这些标准中的大多数都是为错误测试场景或统计分析而设计的,在这些场景中,“低于标准质量”的随机数序列可能会错过重要的测试用例,或者数字可能会偏离预期的均值/中值/标准差的结果。

您的应用程序中不太可能存在这些问题。

关于c++ - C++ 11 中 Mersenne Twister 的最佳常量种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051784/

相关文章:

C:创建具有唯一数字的二维数组

c++ - 未在此范围错误中声明

c++ - 在 BeagleBone 上找不到运行交叉编译程序的 GLIBCXX_3.4.26

c++ - 这种资源泄漏是由可能的评估顺序提供的还是 Scott Meyers 错了?

swift - 如何在 Swift 中随机选择一个枚举

python - 在 Python 中分别洗牌两个列表

c++ - glScaled(size/window_size) 不正确的图像

c++11:完美转发中的常量

c++ - 在 decltype 中使用命名空间

c++ - iostream和命名空间std有什么关系?