Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
!*****************************************************************!
!* *!
!* 4C (FORSEE) Simulation Model *!
!* *!
!* *!
!* Function: *!
!* Algorithm as described in APPL. STATIST. 31:2 (1982) *!
!* The function returns a pseudo-random number uniformly *!
!* distributed between 0 and 1. *!
!* *!
!* Copyright (C) 1996-2018 *!
!* Potsdam Institute for Climate Impact Reserach (PIK) *!
!* Authors and contributors see AUTHOR file *!
!* This file is part of 4C and is licensed under BSD-2-Clause *!
!* See LICENSE file or under: *!
!* http://www.https://opensource.org/licenses/BSD-2-Clause *!
!* Contact: *!
!* https://gitlab.pik-potsdam.de/foresee/4C *!
!* *!
!*****************************************************************!
REAL FUNCTION RAND()
INTEGER IE,IM,IG
! IE, IM and IG should be set to integer values between
! 1 and 30000 before the first entry.
COMMON /RANDOM/ IE,IM,IG
IE=171*MOD(IE,177)-2* (IE/177)
IM=172*MOD(IM,176)-35*(IM/176)
IG=170*MOD(IG,178)-63*(IG/178)
IF (IE.LT.0)IE=IE+30269
IF (IM.LT.0)IM=IM+30307
IF (IG.LT.0)IG=IG+30323
RAND = AMOD(FLOAT(IE) /30269.0+FLOAT(IM)/30307.0+ FLOAT(IG) /30323.0,1.0)
RETURN
END function rand