Я пытаюсь скомпилировать следующий простой код, используя Gfortran 4.7 из УДС-портов (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'. Аргумент 'put' для' random_seed' требует массив из 12 целых чисел. – Yossarian