回 帖 发 新 帖 刷新版面

主题:如何以时间作为种子产生随机数

关于随机数的产生以及应用,我在网上和本论坛搜索过了。我想以时间作为种子数,每个时间产生一个随机数,网上给出了这种方法:
program bh
implicit none
real :: x
call random_seed ()     ! 系统根据日期和时间随机地提供种子
call random_number (x)  ! 每次的随机数就都不一样了
print*,x
end

确实可行。有人说随机数数据包是伪随机数,要自己编代码写rand程序,真的需要这样吗?

回复列表 (共2个回复)

沙发

还一个问题就是,运行的时候会不会产生相同的值,比如我运行时间很长,到明天这个时候会不会跟现在这个时辰得到的值相同?

板凳

我的理解是要得到一个随机数序列只要一个种子,就是call random_seed()一次就行了,根据需要可以任意次调用random_number (x)。
program random
   implicit none
   real :: x
   integer :: i
   call random_seed ()     
   do i=1,1000
    call random_number (x)      
    write(*,*) x
   enddo
   stop
end program random

我来回复

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