【问题标题】:Saving the current seed in a Fortran random number sequence将当前种子保存在 Fortran 随机数序列中
【发布时间】:2014-05-21 11:30:36
【问题描述】:

我目前正在使用内部函数rand() 来生成随机数。我用一些定义的种子初始化了我的序列,但我希望能够输出rand() 在循环中的某个时刻使用的当前种子。

通过这样做,我应该能够在新程序中“继续”随机数序列。

根据我在网上看到的情况,与rand()srand() 函数关联的随机数生成器无法做到这一点。这是真的?任何人都可以提出不同的方法(也许,RANDOM_NUMBER()?)。

【问题讨论】:

    标签: fortran output generator seed


    【解决方案1】:

    randsrand 不是标准 Fortran 函数。我希望您的编译器文档可以告诉您如何最好地使用它们。然而,Fortran 标准定义了一个带有三个可选参数(名为 saveputget)的子例程 random_seedputget 用于设置和获取随机种子。 save 可用于返回用于保存 PRNG 种子的整数数组的大小。然后可以使用标准例程random_number 调用生成器。

    【讨论】:

    • 这是真的,它们是 GNU 扩展。我真的不知道这意味着什么——但它们不是“标准的”。感谢您的建议,我唯一担心的是 random_number 只是 f95 的标准,但我想这不是问题......
    • 它们是 GNU 扩展 的意思是 GNU 编译器作者认为让 Fortrannies 使用这些函数会很好。其他编译器编写者在其编译器中对 Fortran 标准进行了其他扩展。您对在 Fortran 90(不是 95?)中引入 random_number 的担忧仅在您从 1995 年之前通过漩涡发送消息时才有效。
    • 哈哈,那我想这根本就不是问题!网上关于这些东西的好文档太少了,非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2013-05-28
    • 2021-10-22
    相关资源
    最近更新 更多