Fortran 中的随机数组/矩阵初始化

标签 random matrix fortran fortran95

有没有一种方法可以在不使用显式 do 循环的情况下初始化随机数组?

现在我的随机矩阵初始化看起来像

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 做这样的事情?

最佳答案

为什么不

调用 RANDOM_NUMBER(matrix) ?

关于Fortran 中的随机数组/矩阵初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22636532/

相关文章:

matrix - 透视投影矩阵的最后一行

arrays - Fortran 77 在运行时设置数组大小

sql - 为每个用户选择随机的非重复行

java - 仅使用 Random 而不使用 ArrayList 写入不重复的随机数

python - 随机化两个 csv 文件,但索引顺序相同

python - 如何在python中生成8字节唯一随机数?

python - 从 "aim"和 "up"向量的数组计算旋转矩阵

matrix - Julia 中矩阵指数的函数或运算符

fortran - 如何查明使用哪个版本的 gfortran 来编译 fortran .mod 文件

fortran - 引用返回结构/派生类型的函数