2 THE POLAR METHOD FOR COMPUTING A NORMALLY DISTRIBUTED RANDOM
3 NUMBER GIVEN A UNIFORMLY DISTRIBUTED RANDOM NUMBER GENERATOR.
4 ALGORITHM P, PAGES 103-104
6 THE ART OF COMPUTER PROGRAMMING - VOL 2
7 SEMINUMERICAL ALGORITHMS
12 //#include "DIGRand.h"
13 #include <DIGRand/DIGRand.h>
14 //#include "DIGGauss.h"
15 #include <DIGRand/DIGGauss.h>
19 double Gauss(double mean, double std)
21 static bool sw = false;
22 static double s, v1, v2;
27 v1 = (double) 2.0 * Rand() - (double) 1.0;
28 v2 = (double) 2.0 * Rand() - (double) 1.0;
29 s = v1 * v1 + v2 * v2;
33 s = (double) sqrt((double) -2.0 * (double) log(s) / s);
35 return v1 * s * std + mean;
40 return v2 * s * std + mean;