我正在测试链接(fortran 77代码)中提到的RNG代码:
https://www.cisl.ucar.edu/zine/96/spring/articles/3.random-6.html
适用于Park&米勒算法。
程序的函数调用是
call srand(seed)
x=rand()
然而,程序似乎没有响应srand()的播种,即x值不受初始播种的影响,并且总是等于~0.218。我怀疑这与公共块和数据块的定义有关,因为x的值相当于将种子设置为123456789,这是数据块中定义的初始化值。
有什么想法吗?
我正在与gfortran一起编译。
答案 0 :(得分:1)
好的,问题是原来的srand
和rand
可能会被调用。我将函数重命名为srand2
和rand2
,一切都按预期开始工作。
对于seed = 1
,结果为7.82636926E-06
,对于seed = 2
,结果为1.56527385E-05
。在gfortran和英特尔的fortran中检查过它。