Mr.*_*C64 15
我认为Mersenne扭转std::mt19937
引擎就像"默认"PRNG一样好.
您可以使用std::random_device
获取非确定性种子mt19937
.
来自Stephan T. Lavavej的 GoingNative 2013有一个非常有趣的演讲:
您也可以从该网站下载幻灯片.特别是,滑动#23显然比较mt19937
对random_device
:
mt19937
是:
- 快速(499 MB/s = 6.5个周期/字节对我来说)
- 极高的质量,但不是加密安全
- 可种子(如果你想要超过32位)
- 可重复(标准强制算法)
random_device
是:
- 可能很慢(1.93 MB/s = 1683个周期/字节对我来说)
- 强烈依赖平台(GCC 4.8可以使用IVB RDRAND)
- 可能是加密安全的(检查文档,对VC来说是真的)
- 不可种子,不可重复