* * $Id: dfunrn.F,v 1.1.1.1 1996/03/08 16:58:53 mclareni Exp $ * * $Log: dfunrn.F,v $ * Revision 1.1.1.1 1996/03/08 16:58:53 mclareni * Eurodec * * #include "eurodec/pilot.h" SUBROUTINE DFUNRN(ARRAY,XRAN) C.---------------------------------------------------------------------- C. C. GENERATION OF RANDOM NUMBERS IN ANY GIVEN DISTRIBUTION, BY C. 4-POINT INTERPOLATION IN THE INVERSE CUMULATIVE DISTR. C. WHICH WAS PREVIOUSLY GENERATED BY FUNPRE C. BY F. JAMES, MAY, 1976 AND H. NEWMAN, JUNE 1978. C. LAST UPDATE: 10/04/88 C. C.---------------------------------------------------------------------- #if defined(CERNLIB_DOUBLE) IMPLICIT DOUBLE PRECISION (A-H,O-Z) REAL XRAN,EURRAN #endif DIMENSION ARRAY(100) DATA GAP,GAPINV/ .01010101010, 99.0/ X=EURRAN(IXDUM) J=INT(X*GAPINV)+1 J=MAX0(J,2) J=MIN0(J,98) P=(X-GAP*FLOAT(J-1))*GAPINV A=(P+1.00)*ARRAY(J+2)-(P-2.00)*ARRAY(J-1) B=(P-1.00)*ARRAY(J)-P*ARRAY(J+1) XRAN=A*P*(P-1.00)*0.166666666667+B*(P+1.00)*(P-2.00)*0.50 RETURN END