RANDOM NUMBER GENERATOR
FORTRAN Subroutine

MODULE SUBS

CONTAINS

SUBROUTINE RANDOM_NUMBER(SEED,RAND_OUT)

IMPLICIT NONE

   INTEGER,INTENT(IN OUT)::SEED

   REAL,INTENT(OUT)::RAND_OUT

   SEED = 2045*SEED + 1

   SEED = SEED -(SEED/1048576)*1048576

   RAND_OUT = (SEED + 1)/1048577.0

RETURN

END SUBROUTINE RANDOM_NUMBER

END MODULE SUBS

 

PROGRAM TEST_RANDOM_GENERATOR

USE SUBS

IMPLICIT NONE

   INTEGER::SEED, I

   REAL::RANDX

   WRITE(*,*) 'This test program will generate 100 random uniformly'

   WRITE(*,*) 'distributed numbers in the interval [0, 1].'

   WRITE(*,*) 'The generator needs you to make up a positive integer for'

   WRITE(*,*) 'it to use as a SEED to get started. Choose a different SEED every'

   WRITE(*,*) 'time you run the generator.'

   WRITE(*,*)

   WRITE(*,*) 'What is the SEED?'

   READ(*,*) SEED

   DO I=1,100

      CALL RANDOM_NUMBER(SEED,RANDX)

      WRITE(*,*) RANDX

   END DO

STOP

END PROGRAM TEST_RANDOM_GENERATOR