random_exponential Function

function random_exponential() result(fn_val)

Arguments

None

Return Value real


Source Code

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