FUNCTION random_exponential() RESULT(fn_val) ! 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. REAL :: fn_val ! Local variable REAL :: r DO CALL RANDOM_NUMBER(r) IF (r > zero) EXIT END DO fn_val = -LOG(r) RETURN END FUNCTION random_exponential