FUNCTION random_exponential() RESULT(ran_exp) ! Adapted from Fortran 77 code from the book: ! Dagpunar, J. 'Principles of random variate generation' ! Clarendon Press, Oxford, 1988. ISBN 0-19-852202-9 ! FUNCTION GENERATES A RANDOM VARIATE IN [0,INFINITY) FROM ! A NEGATIVE EXPONENTIAL DlSTRIBUTION WlTH DENSITY PROPORTIONAL ! TO EXP(-random_exponential), USING INVERSION. IMPLICIT NONE REAL :: ran_exp ! Local variable REAL :: r DO CALL RANDOM_NUMBER(r) IF (r > zero) EXIT END DO ran_exp = -LOG(r) RETURN END FUNCTION random_exponential