我的问题是以下问题...我有一个整数,该整数在调用随机种子函数后会更改值。该值作为参数传递,应为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编译器。 预先感谢您的帮助。告诉我是否应该发布更多代码或上传文件。