Есть ли способ инициализировать случайный массив без использования явных циклов?
Прямо сейчас инициализация моей случайной матрицы выглядит так
program Main
implicit none
save
integer :: seed, i, j
real :: x
character(100) :: option
real, dimension(10,10) :: matrix
if (iargc() > 0) then
CALL GETARG(1,option)
read(option,*) seed
else
seed = 1
end if
call RANDOM_SEED(seed)
do i=1,10
do j=1,10
call RANDOM_NUMBER(x)
matrix(i,j) = x
end do
end do
end program
Но, если возможно, я бы хотел, чтобы это было больше похоже на подразумеваемую инициализацию массива do-loop:
program Main
implicit none
save
integer :: seed
character(100) :: option
real, dimension(10,10) :: matrix
if (iargc() > 0) then
CALL GETARG(1,option)
read(option,*) seed
else
seed = 5
end if
call RANDOM_SEED(seed)
matrix = reshape((/ ((call RANDOM_NUMBER()), i=1,100) /), shape(matrix))
end program
Возможно ли что-то подобное с Fortran 95?