RANECU

 

The Random Number Generator RANECU  is a FORTRAN application. RANECU produces uniform random numbers on [0,1]. RANECU is multiplicative linear congruential generator suitable for a 16-bit platform. It combines three simple generators, and has a period exceeding 81012.

 

It is constructed for more efficient use by providing for a sequence of random numbers and the numbers are returned in a single call. A set of three non-zero integer seeds can be supplied, failing which a default set is employed. If supplied, these three seeds, in order, should lie in the ranges [1,32362], [1,31726] and [1,31656] respectively.

 

SUBROUTINE RANECU (RVEC,LEN)                        

C Portable random number generator for 16 bit computer.

C Generates a sequence of LEN pseudo-random numbers, returned in

C RVEC.

    DIMENSION RVEC(*)

    SAVE ISEED1,ISEED2, ISEED3

    DATA ISEED1,ISEED2,ISEED3/1234, 5678, 9876/

C Default values, used if none supplied via an ENTRY

C call at RECUIN

    DO 100 I = 1,LEN

  K=ISEED1/206

  ISEED1 = 157*ISEED1-K*06) - K*1

  IF(ISEED1.LT.0) ISEED1=ISEED1+32363

  K=ISEED2/217

  ISEED2 = 146*(ISEED2-K*217)-K*5

  IF(ISEED2.LT.O) ISEED2=ISEED2+31727

  K=ISEED3/222

  ISEED3 = 142*(ISEED3-K*222)-K*133

  IF(ISEED3.LT.0) ISEED3=ISEED3+31657

  IZ=ISEED1-ISEED2

  IF(IZ.GT.706)IZ = Z- 2362

  IZ = 1Z+ISEED3

  IF(IZ.LT.1)IZ = 1Z+32362

  RVEC(I)=REAL(IZ)*3.0899E-5

100   CONTINUE

  RETURN

  ENTRY RECUIN(IS1, IS2, IS3)

  ISEED1=IS1

  ISEED2=IS2

  ISEED3=IS3

  RETURN

  ENTRY RECUUT(IS1,IS2,IS3)

  IS1=ISEED1

  IS2=ISEED2

  IS3=ISEED3

  RETURN

  END