30 integer,
parameter :: ia=16807, im=2147483647, iq=127773, ir=2836
31 integer,
parameter :: ntab=32, ndiv=1+(im-1)/ntab
32 real,
parameter :: am=1./im, eps=1.2e-7, rnmx=1.-eps
34 integer :: iv(ntab) = (/ (0,j=1,ntab) /)
37 if (idum.le.0.or.iy.eq.0)
then
41 idum=ia*(idum-k*iq)-ir*k
42 if (idum.lt.0) idum=idum+im
43 if (j.le.ntab) iv(j)=idum
48 idum=ia*(idum-k*iq)-ir*k
49 if (idum.lt.0) idum=idum+im
62 real ::
gasdev, fac, r, v1, v2
65 real,
external ::
ran3
71 if(r.ge.1.0 .or. r.eq.0.0) go to 1
72 fac=sqrt(-2.*log(r)/r)
88 real :: random1, random2, fac, v1, v2, r
89 real,
external ::
ran3
94 if(r.ge.1.0 .or. r.eq.0.0) go to 1
95 fac=sqrt(-2.*log(r)/r)
100 if (random1.lt.-3.) random1=-3.
101 if (random2.lt.-3.) random2=-3.
102 if (random1.gt.3.) random1=3.
103 if (random2.gt.3.) random2=3.
114 integer,
parameter :: mbig=1000000000, mseed=161803398, mz=0
115 real,
parameter :: fac=1./mbig
116 integer :: i,ii,inext,inextp,k
117 integer :: mj,mk,ma(55)
122 if(idum.lt.0.or.iff.eq.0)
then
132 if(mk.lt.mz)mk=mk+mbig
137 ma(i)=ma(i)-ma(1+mod(i+30,55))
138 if(ma(i).lt.mz)ma(i)=ma(i)+mbig
146 if(inext.eq.56)inext=1
148 if(inextp.eq.56)inextp=1
149 mj=ma(inext)-ma(inextp)
150 if(mj.lt.mz)mj=mj+mbig
real function gasdev(idum)
subroutine gasdev1(idum, random1, random2)