【发布时间】:2014-02-10 21:35:26
【问题描述】:
我正在尝试使用来自 mac-ports (OS-X) 的 Gfortran 4.7 编译以下简单代码:
program main
implicit none
integer :: n = 1, clock, i
integer, dimension(1) :: iseed
! initialize the random number generator
call random_seed(size = n)
call system_clock(COUNT=clock)
iseed = clock + 37 * (/ (i - 1, i = 1, n) /)
! iseed = clock
! iseed = abs( mod((clock*181)*((1-83)*359), 104729) )
call random_seed(PUT = iseed)
end program main
并出现此错误:
gfortran-mp-4.7 tmp.f90
tmp.f90:17.23:
call random_seed(PUT = iseed)
1
Error: Size of 'put' argument of 'random_seed' intrinsic at (1) too small (1/12)
我根本不使用 Fortran(我是 C++ 人),所以如果有人能提供帮助并使其正常工作,我将不胜感激。
附言在一个类似的问题上,我发现了几个论坛帖子,当前取消注释的解决方案类似于this GCC bug report 中提到的解决方案。
提到abs 的那个in this stack overflow post(添加它时没有PID,因为无论如何我都不并行运行。
更新:
以下作品:
program main
implicit none
integer :: n = 12, clock, i
integer, dimension(:), allocatable :: iseed
! initialize the random number generator
allocate(iseed(n))
call random_seed(size = n)
call system_clock(COUNT=clock)
iseed = clock + 37 * [(i, i = 0,n-1)]
call random_seed(PUT = iseed)
end program main
【问题讨论】:
-
您链接到的 GCC 错误报告有解决方案:您需要设置
n = 12和integer, dimension(12) :: iseed。random_seed的put参数需要一个由 12 个整数组成的数组。