]>
Commit | Line | Data |
---|---|---|
3820ca8e | 1 | |
2 | CDECK ID>, HWREXQ. | |
3 | ||
4 | *CMZ :- -02/06/94 11.02.47 by Mike Seymour | |
5 | ||
6 | *-- Author : David Ward, modified by Bryan Webber and Mike Seymour | |
7 | ||
8 | C----------------------------------------------------------------------- | |
9 | ||
10 | FUNCTION HWREXQ(AV,XMAX) | |
11 | ||
12 | C----------------------------------------------------------------------- | |
13 | ||
14 | C Random number from dN/d(x**2)=EXQ(-b*x) with mean AV, | |
15 | ||
16 | C But truncated at XMAX | |
17 | ||
18 | C----------------------------------------------------------------------- | |
19 | ||
20 | DOUBLE PRECISION HWREXQ,HWR,AV,B,BXMAX,R1,R2,XMAX,R,RMIN | |
21 | ||
22 | EXTERNAL HWR | |
23 | ||
24 | B=2./AV | |
25 | ||
26 | BXMAX=B*XMAX | |
27 | ||
28 | IF (BXMAX.LT.50) THEN | |
29 | ||
30 | RMIN=EXP(-BXMAX) | |
31 | ||
32 | ELSE | |
33 | ||
34 | RMIN=0 | |
35 | ||
36 | ENDIF | |
37 | ||
38 | 10 R1=HWR()*(1-RMIN)+RMIN | |
39 | ||
40 | R2=HWR()*(1-RMIN)+RMIN | |
41 | ||
42 | R=R1*R2 | |
43 | ||
44 | IF (R.LT.RMIN) GOTO 10 | |
45 | ||
46 | HWREXQ=-LOG(R)/B | |
47 | ||
48 | END |