我試圖編譯使用Gfortran 4.7從MAC端口(OS-X)以下簡單的代碼:gfortran和隨機數
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++的人),所以如果有人能夠幫助並使之工作,我會非常感激。
p.s.在類似的問題上,我發現了幾個論壇帖子,目前的解除評論解決方案與this GCC bug report中提到的解決方案類似。
與abs
該一個提到in this stack overflow post(加入它而不PID因爲我不併行運行反正
UPDATE:
以下工作:
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個整數的數組。 – Yossarian