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