c – Mersenne Twister编译器的再现性

c – Mersenne Twister编译器的再现性,第1张

概述参见英文答案 > stl random distributions and portability                                    1个 我用std :: mt19937_64生成一系列随机数.我注意到,当使用相同的种子在同一平台上运行GCC和Clang时,我获得了不同的序列.我通过Valgrind运行程序,发现没有未初始化的内存. 使用std :: mt19 参见英文答案 > stl random distributions and portability1个
我用std :: mt19937_64生成一系列随机数.我注意到,当使用相同的种子在同一平台上运行GCC和Clang时,我获得了不同的序列.我通过Valgrind运行程序,发现没有未初始化的内存.

使用std :: mt19937_64是否可以保证编译器或跨平台的可重现性?

编辑:使用std :: normal_distribution运行

解决方法 引擎生成的数字保证可以跨实现重现,但分布不是. (来源: rand() considered harmful).

N3337标准草案说明了关于normal_distribution(26.5.8.5.1):

A normal_distribution random number distribution produces random numbers x distributed according to the probability density function

The distribution parameters µ and σ are also kNown as this distribution’s mean and standard deviation

而且……就是这样.它不指定生成的数字的顺序,也不指定算法,也不指定示例输出.

关于mersenne_twister_engine(26.5.3.2)的标准非常详细,它规定了状态转换函数,初始种子算法等.

总结

以上是内存溢出为你收集整理的c – Mersenne Twister编译器的再现性全部内容,希望文章能够帮你解决c – Mersenne Twister编译器的再现性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1241255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存