Fortran 随机数

| categories tech  | tags fortran 

先写个利用系统时间设置随即数种子的函数init_random_seed(),放到 一个模块文件里面,便于重复利用。 在主函数里面加载这个模块,调用一次这个init_random_seed()函数。

random.f90:

module random
    contains
    subroutine init_random_seed()
        INTEGER :: i, n, clock
        INTEGER, DIMENSION(:), ALLOCATABLE :: seed
        CALL RANDOM_SEED(size = n)
        ALLOCATE(seed(n))
        CALL SYSTEM_CLOCK(COUNT=clock)
        seed = clock + 37 * (/ (i - 1, i = 1, n) /)
        CALL RANDOM_SEED(PUT = seed)
        DEALLOCATE(seed)
    end subroutine init_random_seed
end module random

调用测试一下:

test_random.f90:

program test_rand
    use random
    real :: A
    call init_random_seed()
    call random_number(A)
    write(,) A
end program test_rand

每次运行结果应该都不一样。


上一篇     下一篇