私は、MAC-ポート(OS-X)からのgfortran 4.7を使用して、次の簡単なコードをコンパイルしようとしています:の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)
IドンFortranを全く使わない(私はC++の人です)ので、誰かが助けて作業できるかどうか本当に感謝しています。
p.s.同様の問題で、私はいくつかのフォーラム投稿を見つけましたが、現在の非コメント解決策はthis GCC bug reportに記載されているものと似ています。私はとにかく、並列に実行されませんので、
abs
と1が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