事实上,这并不像我最初想的那么简单。 如果没有硬件随机数生成器,有什么最好的方法来为Mersenne Twister生成种子呢? 或者说,用于生成UUID的Mersenne Twister RNG应如何接受种子才是可接受的?
这里有一个很好的关于伪随机数生成器的讨论,包括了PRNG的适当种子设置(参见规则3),使用md5sum和/dev/random或/dev/urandom生成种子。你可以在这里找到更多信息。 此外,还有一些PRNG算法,比MT要容易编码(<10行代码),但同样优秀(长周期且通过所有Dieharder随机性测试)。 更多阅读: 用std::random_device种子化std::mt19937 用于Monte Carlo模拟的最佳mt19937_64种子方式 如何以跨平台方式获取(几乎)唯一的系统标识符?
md5sum
和/dev/random
来生成种子。(这也包括许多PRNG算法,比MT更容易编码,但同样出色)。 - Chris