回 帖 发 新 帖 刷新版面

主题:徐士良程序集里随机数的产生问题

徐士良fortran算法程序集里有这样一段程序,是产生50个均值为1,方差为1.5^2的正态分布随机数的,程序如下:
      DOUBLE PRECISION R
      REAL NGRN1,A(50)
      R=5.0
      U=1.0
      G=1.5
      N=50
      DO 10 I=1,100
10     A(I)=NGRN1(U,G,R)
      WRITE(*,*)
      WRITE(*,20)(A(I),I=1,50)
20    FORMAT(1X,5F10.6)
      END
其中NGRN1就是产生随机数的函数,U是均值,G是方差,R是随机数种子。
问题来了,我认为最后产生的50个随机数肯定都一样,是我想太多还是源程序有问题?

回复列表 (共4个回复)

沙发

伪随机数依赖于随机数种子,默认的情况下一般是调用系统的时间作为随即数的种子的话,说以你每次调用产生的随机数并不一样。除非你每次调用前都重设seed。

板凳

[quote]伪随机数依赖于随机数种子,默认的情况下一般是调用系统的时间作为随即数的种子的话,说以你每次调用产生的随机数并不一样。除非你每次调用前都重设seed。[/quote]
奇怪的就是这个例子中已经把随机数种子R设为定值了

3 楼


那就是一样的了

4 楼


没仔细看题,如果种子确定了,那就是一样的了。

我来回复

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