fortran中的随机数发生器

时间:2014-10-06 19:25:01

标签: fortran gfortran prng fortran-common-block

我正在测试链接(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一起编译。

1 个答案:

答案 0 :(得分:1)

好的,问题是原来的srandrand可能会被调用。我将函数重命名为srand2rand2,一切都按预期开始工作。

对于seed = 1,结果为7.82636926E-06,对于seed = 2,结果为1.56527385E-05。在gfortran和英特尔的fortran中检查过它。