首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GNU Fortran编译器(gfortran)和随机数种子的问题

GNU Fortran编译器(gfortran)和随机数种子的问题
EN

Stack Overflow用户
提问于 2022-09-27 18:03:32
回答 2查看 59关注 0票数 1

我用Fortran编写了一个使用RANDOM_NUMBER()并使用gfortran编译的程序,但是我注意到生成的随机数在不同版本之间是不一致的。如果不使用RANDOM_SEED()作为随机数生成器的种子,则gfortran4.4.7( Centos 6中的默认值)和gfortran4.8.5( Centos 7中的默认值)都会产生相同的随机数序列。这让我感到惊讶,因为gfortran 4.4.7中的默认种子长8个整数,而gfortran 4.8.5中的缺省种子长12个整数,数字完全不同,但随机数序列仍然是相同的。另一方面,gfortran7.3.1(包含在Centos 7中的devtoolset7包中)在每次运行中都会产生不同的随机数序列,除非用RANDOM_SEED()初始化它。但是,此版本中的种子由33个整数组成,因此旧版本的种子将无法工作。

为了重现性,我需要在每次运行中复制完全相同的随机数序列,而不考虑gfortran版本。我想知道是否有一种方法在不同的gfortran版本之间转换默认的种子,或者是否有其他方法来获得与任何gfortran版本相同的随机数序列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-27 19:17:40

不,对于GFortran 7,PRNG算法被改变为一种完全不同的算法。对于GFortran <7和>= 7,基本上没有办法获得相同的随机数流。

如果您需要不同GFortran版本之间的精确再现性,则需要使用另一个PRNG实现。

票数 2
EN

Stack Overflow用户

发布于 2022-09-27 19:36:09

詹妮布是对的。

如果您需要编译器版本之间的一致性,甚至编译器(ifortpgfortran)之间的一致性,那么您应该使用内置工具以外的其他工具。我个人知道SPRNG (http://www.sprng.org/),大概还有许多其他类似的工具。

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

https://stackoverflow.com/questions/73871987

复制
相关文章

相似问题

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