camfort-0.62: samples/booku/two/code212.f90
!!!!!!!!!!!!!!!!!!!!!!!!!!! Program 2.12 !!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! !
! Please Note: !
! !
! (1) This computer program is written by Tao Pang in conjunction with !
! his book, "An Introduction to Computational Physics," published !
! by Cambridge University Press in 1997. !
! !
! (2) No warranties, express or implied, are made for this program. !
! !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
!
FUNCTION ERNF() RESULT (E)
!
! Exponential random number generator from a uniform random
! number generator. Copyright (c) Tao Pang 1997.
!
REAL :: E
REAL R,RANF
!
E = -ALOG(1.0-RANF())
END FUNCTION ERNF
!
FUNCTION RANF() RESULT (R)
!zd
! Uniform random number generator x(n+1) = a*x(n) mod c with
! a=7**5 and c = 2**(31)-1. Copyright (c) Tao Pang 1997.
!
USE CSEED
IMPLICIT NONE
INTEGER,unit(i) :: ISEED
INTEGER, unit(i) :: IH,IL
INTEGER :: IT,IA,IC,IQ,IR
DATA IA/16807/,IC/2147483647/,IQ/127773/,IR/2836/
REAL :: R
!
IH = ISEED/IQ
IL = MOD(ISEED,IQ)
IT = IA*IL-IR*IH
IF(IT.GT.0) THEN
ISEED = IT
ELSE
ISEED = IC+IT
END IF
R = ISEED/FLOAT(IC)
END FUNCTION RANF