我的用例是:我需要随机数,但仅用于图形(不用于密码学)。我需要能够为 2 次渲染/运行获得相同的图像(结果)。例如,使用 time()
作为种子不会为下一次运行创建相同的结果。所以我需要一个常量种子。
Mersenne Twister 的文档说它不喜欢 0 作为种子,它也不喜欢某些位组合。对于这种情况,据说要进行多达 800000 次调用,直到它再次提供良好的随机数。出于速度原因,我不想花费 800000 次调用的开销。 理想情况下,我需要一些可以直接用作种子的可靠值。
最佳答案
只需选择您想要的任何数字即可。
您必须牢记的是,密码学专家和算法分析师用于“高质量随机性”的标准几乎肯定远远高于您的项目所需的标准,尤其是对于像 Mersenne 这样经过良好测试的算法 Tornado 。这些标准中的大多数都是为错误测试场景或统计分析而设计的,在这些场景中,“低于标准质量”的随机数序列可能会错过重要的测试用例,或者数字可能会偏离预期的均值/中值/标准差的结果。
您的应用程序中不太可能存在这些问题。
关于c++ - C++ 11 中 Mersenne Twister 的最佳常量种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051784/