首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11 PRNG能产生可重复的结果吗?

C++11 PRNG能产生可重复的结果吗?
EN

Stack Overflow用户
提问于 2016-04-30 16:59:31
回答 2查看 96关注 0票数 1

我正在为我的包开发一个测试套件,作为测试的一部分,我想在一个数据块上运行我的算法。然而,我想到,与其硬编码一个特定的数据块,我可以使用一个算法来生成它。我想知道C++11 <random>工具是否适合用于此目的。

据我所知,实现特定算法需要C++11随机数引擎。因此,给定相同的种子,它们应该在算法参数定义的范围内产生相同的随机整数序列。

然而,就发行版而言,标准规定:

生成每个指定发行版的算法都是实现定义的。

(26.5.8.1随机数分布类模板/一般情况下)

这--除非我弄错了--意味着分发的输出几乎是没有定义的。根据我测试的结果,在相同的随机引擎的情况下,GNU libstdc++和LLVM项目的libc++中的分布会产生不同的结果。

因此,问题是:在不同平台上产生完全可重复的伪随机数据的最正确的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2016-04-30 17:13:52

在不同的平台上产生完全可重复的伪随机数据的最正确的方法是什么?

这是显而易见的:编写您自己的发行版。正如您自己指出的,引擎是跨平台的,因为它们实现了特定的算法。是实现定义的发行版。

所以你自己写发行版吧。

票数 2
EN

Stack Overflow用户

发布于 2016-05-02 10:38:50

请看这个答案:https://stackoverflow.com/a/34962942/1151329

我确实有这个问题,并且编写我自己的发行版非常有效。我在linux、OSx、windows、x86和ARM上都得到了相同的序列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36957670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档