回 帖 发 新 帖 刷新版面

主题:fortran90,随机数的生成

program ex0825
    implicit none
    interface
    function random10(a,b)
    implicit none
    real::a,b
    real::random10(10)
    end function
    end interface
    real::a(10)
    call RANDOM_SEED                                        !启动随机数生成器
    a=random10(1.0,10.0)                                   !生成10个1.0到10.0之间的随机数
    write(*,"(10f6.2)")a                                        !输出数组a的内容
    end
   
    function random10(a,b)
    implicit none
    real::a,b
    real::len
    real::random10(10)
    real t
    integer i
    len=b-a
    do i=1,10
        call RANDOM_NUMBER(t)                               !t是0-1之间的随机数
        random10(i)=a+len*t                                     !把t转换成a~b间的随机数
    end do
    return
    end
   

前面的都能看懂,不明白的是为什么前面call random_seed已经生成了10个随机数,子程序中还要通过生成t,转化成a~b间的随机数。求大神帮忙,谢谢!



回复列表 (共2个回复)

沙发

这个就是均匀分布的随机数

板凳

https://1680380.com/view/aozxy10/pk10kai.html 澳洲幸运10 谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册