SUBROUTINE DEXRAN(N,ISTART,X) C C PURPOSE--THIS SUBROUTINE GENERATES A RANDOM SAMPLE OF SIZE N C FROM THE DOUBLE EXPONENTIAL C (LAPLACE) DISTRIBUTION WITH MEAN = 0 AND C STANDARD DEVIATION = SQRT(2). C THIS DISTRIBUTION IS DEFINED FOR ALL X AND HAS C THE PROBABILITY DENSITY FUNCTION C F(X) = 0.5*EXP(-ABS(X)). C INPUT ARGUMENTS--N = THE DESIRED INTEGER NUMBER C OF RANDOM NUMBERS TO BE C GENERATED. C --ISTART = AN INTEGER FLAG CODE WHICH C (IF SET TO 0) WILL START THE C GENERATOR OVER AND HENCE C PRODUCE THE SAME RANDOM SAMPLE C OVER AND OVER AGAIN C UPON SUCCESSIVE CALLS TO C THIS SUBROUTINE WITHIN A RUN; OR C (IF SET TO SOME INTEGER C VALUE NOT EQUAL TO 0, C LIKE, SAY, 1) WILL ALLOW C THE GENERATOR TO CONTINUE C FROM WHERE IT STOPPED C AND HENCE PRODUCE DIFFERENT C RANDOM SAMPLES UPON C SUCCESSIVE CALLS TO C THIS SUBROUTINE WITHIN A RUN. C OUTPUT ARGUMENTS--X = A SINGLE PRECISION VECTOR C (OF DIMENSION AT LEAST N) C INTO WHICH THE GENERATED C RANDOM SAMPLE WILL BE PLACED. C OUTPUT--A RANDOM SAMPLE OF SIZE N C FROM THE DOUBLE EXPONENTIAL C (LAPLACE) DISTRIBUTION WITH MEAN = 0 AND C STANDARD DEVIATION = SQRT(2). C PRINTING--NONE UNLESS AN INPUT ARGUMENT ERROR CONDITION EXISTS. C RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE C OF N FOR THIS SUBROUTINE. C OTHER DATAPAC SUBROUTINES NEEDED--UNIRAN. C FORTRAN LIBRARY SUBROUTINES NEEDED--ALOG. C MODE OF INTERNAL OPERATIONS--SINGLE PRECISION. C LANGUAGE--ANSI FORTRAN. C REFERENCES--TOCHER, THE ART OF SIMULATION, C 1963, PAGES 14-15. C --HAMMERSLEY AND HANDSCOMB, MONTE CARLO METHODS, C 1964, PAGE 36. C --FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION C OF THE LOCATION PARAMETER OF A SYMMETRIC C DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION, C PRINCETON UNIVERSITY), 1969, PAGE 231. C --FILLIBEN, 'THE PERCENT POINT FUNCTION', C (UNPUBLISHED MANUSCRIPT), 1970, PAGES 28-31. C --JOHNSON AND KOTZ, CONTINUOUS UNIVARIATE C DISTRIBUTIONS--2, 1970, PAGES 22-36. C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING LABORATORY (205.03) C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE: 301-921-2315 C ORIGINAL VERSION--JUNE 1972. C UPDATED --SEPTEMBER 1975. C UPDATED --NOVEMBER 1975. C C--------------------------------------------------------------------- C DIMENSION X(1) C IPR=6 C C CHECK THE INPUT ARGUMENTS FOR ERRORS C IF(N.LT.1)GOTO50 GOTO90 50 WRITE(IPR, 5) WRITE(IPR,47)N RETURN 90 CONTINUE 5 FORMAT(1H , 91H***** FATAL ERROR--THE FIRST INPUT ARGUMENT TO THE 1 DEXRAN SUBROUTINE IS NON-POSITIVE *****) 47 FORMAT(1H , 35H***** THE VALUE OF THE ARGUMENT IS ,I8 ,6H *****) C C-----START POINT----------------------------------------------------- C C GENERATE N UNIFORM (0,1) RANDOM NUMBERS; C CALL UNIRAN(N,ISTART,X) C C GENERATE N DOUBLE EXPONENTIAL RANDOM NUMBERS C USING THE PERCENT POINT FUNCTION TRANSFORMATION METHOD. C DO100I=1,N Q=X(I) IF(Q.LE.0.5)X(I)=ALOG(2.0*Q) IF(Q.GT.0.5)X(I)=-ALOG(2.0*(1.0-Q)) 100 CONTINUE C RETURN END