FUNCTION random_Cauchy() RESULT(fn_val) ! Generate a random deviate from the standard Cauchy distribution REAL :: fn_val ! Local variables REAL :: v(2) DO CALL RANDOM_NUMBER(v) v = two*(v - half) IF (ABS(v(2)) < vsmall) CYCLE ! Test for zero IF (v(1)**2 + v(2)**2 < one) EXIT END DO fn_val = v(1) / v(2) RETURN END FUNCTION random_Cauchy