变量在调用random_seed之后更改fortran中的值

时间:2018-10-18 16:02:43

标签: memory fortran random-seed

我的问题是以下问题...我有一个整数,该整数在调用随机种子函数后会更改值。该值作为参数传递,应为20。 这些是代码的相关部分:

 implicit none
 extrenal masres
 integer  :: i, j, k, n, nc, nr, irch, ncor, ierr, nfil21

...

 write(*,*) 'n = ', n
 del = 0.d+0
 del1 = 0.d+0
 call random_seed(size=n)
 write(*,*) 'n = ', n

我的输出是:

 n =           20
 n =           33 

我尝试了一种失败的解决方法:

 write(*,*) 'n = ', n
 k = n
 del = 0.d+0
 del1 = 0.d+0
 call random_seed(size=k)
 write(*,*) 'k = ', k
 allocate(seed(n))
 call system_clock(COUNT=clock)
 if(info.eq.1) then
     seed = clock+37*[(1-i**2/1+i**2,i=1,n)]
 else
     seed = into+37*[(i+24)**2,i=1,n]
 endif
 call random_seed(put=seed)

我得到的是:

 n =           20
 k =           33

 Fortran runtime error: Array size of PUT is too small.

这很明显,因为随机种子显然是用33而不是20初始化的,所以分配的种子数组将太小。

我不知道这是否重要,但是我使用gfortran编译器。 预先感谢您的帮助。告诉我是否应该发布更多代码或上传文件。

0 个答案:

没有答案