ran.f
上传用户:jet_ld
上传日期:2022-07-30
资源大小:1k
文件大小:1k
源码类别:

其他小程序

开发平台:

Fortran

  1.       real function ranw(idum)
  2.       Parameter (Mbig=2**30-2, Xinvers=1./Mbig)
  3.       data ibit/ 1/
  4.       Integer IX(55)
  5.       save
  6.       if (ibit.ne.0) then
  7.          ibit=0
  8. cc
  9. cc       fill up the vector ix with some random integers, which are
  10. cc       not all even
  11. cc       
  12.          if (idum.eq.0) pause 'use nonzero value of idum'
  13.          idum=abs(mod(idum,Mbig))
  14.          ibit=0
  15.          Ix(1)=871871
  16.          Do i=2,55
  17.             Ix(i)=mod(Ix(i-1)+idum,Ix(i-1))
  18.             Ix(i)=max(mod(Ix(i),Mbig),idum)
  19.          end do
  20.          j=24
  21.          k=55
  22. cc
  23. cc       warm up the generator     
  24. cc
  25.          do i=1,1258
  26.             Ix(k)=mod(Ix(k)+Ix(j),Mbig)
  27.             j=j-1
  28.             if (j.eq.0) j=55 
  29.             k=k-1
  30.             if (k.eq.0) k=55 
  31.          end do
  32.       end if
  33. cc
  34. cc    this is where execution usually starts:
  35. cc
  36.       Ix(k)=mod(Ix(k)+Ix(j),Mbig)
  37.       j=j-1
  38.       if (j.eq.0) j=55 
  39.       k=k-1
  40.       if (k.eq.0) k=55 
  41.       ranw=Ix(k)*Xinvers 
  42.       end