SUBROUTINE RANDM(X, A, MRND, RNUMB) C C + + + PURPOSE + + + C C RANDM COMPUTES RANDOM NUMBERS BY A MULTIPLICATIVE CONGRUENTIAL C METHOD: C C X = A*X MOD M, RNUMB=X/M C C NOTE: BGNRND SHOULD BE USED TO INITIALIZE X (THE CHECKS MADE C THERE [A*M AND A CAN BE REPRESENTED EXACTLY IN X AND U] ENSURE C THAT SUCESSIVE VALUES OF X CAN BE CALCULATED EXACTLY) C C THE NUMBER OF SIGNIFICANT DIGITS IN THE RESULT IS ROUGHLY THE C MINIMUM OF: C 1) THE NUMBER OF SIGNIFICANT DIGITS IN RND, AND C 2) THE NUMBER OF SIGNIFICANT DIGITS IN U LESS THE NUMBER OF C DIGITS OF THE MULTIPLIER IN A C C WHEN U IS DOUBLE PRECISION, ALL THE DIGITS IN RND ARE C SIGNIFICANT C C INITIALIZES PARAMETER VALUES FOR HYDROLOGY COMPONENT. C C CALLED FROM PSIINV C AUTHOR(S): D. FLANAGAN, J. ASCOUGH C VERSION: THIS MODULE TAKEN FROM ASCOUGH STANDALONE IRS CODE C DATE CODED: 3-24-2005 C CODED BY: D. FLANAGAN C C C + + + ARGUMENT DECLARATIONS + + + REAL X, A, MRND, RNUMB C + + + ARGUMENT DEFINITIONS + + + C C X - C A - C MRND - C RNUMB - RANDOM NUMBER RETURNED FROM SUBROUTINE C C + + + LOCAL DECLARATIONS + + + REAL V DOUBLE PRECISION U C + + + LOCAL DEFINITIONS + + + C V - HOLDS INTERMEDIATE RESULTS C U - HOLDS INTERMEDIATE RESULTS C + + + END SPECIFICATIONS + + + X = A * X U = X / MRND V = U V = AINT(V) X = X - V * MRND C IF (X.LT.0.D0) THEN V = V - 1. X = X + MRND END IF C RNUMB = U - V C RETURN END