梅森捻捻机在C++11中的最佳常数种子

Optimal constant seed for Mersenne Twister in C++ 11

本文关键字:最佳 常数 种子 C++11 捻机      更新时间:2023-10-16

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

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

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

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

这些是应用程序中关注的问题极不可能。