55 const double scale = 1.0 / maxran;
59 return scale * (double)
irn[
next++];
72 zzr = xi1 * xi1 + xi2 * xi2;
76 zzr =
sqrt(-2.0 *
log(zzr) / zzr);
92 static const int nd = 21;
100 int j =
seed % maxran;
104 for(
int i = 1; i <
nr; i++) {
105 int ii = (nd * i) %
nr;
109 if(k < 0) k += maxran;
123 static const int nj = 24;
126 for(i = 0; i < nj; i++) {
129 if(j < 0) j += maxran;
134 for(i = nj; i <
nr; i++) {
137 if(j < 0) j += maxran;
Tps< T > log(const Tps< T > &x)
Natural logarithm.
Tps< T > sqrt(const Tps< T > &x)
Square root.
int seed
The current random seed.
int integer()
Uniform distribution.
void reseed(int seed=123456789)
Set a new seed.
void gauss(double &gr1, double &gr2)
Gaussian distribution.
void init55(int seed)
Initialise random number generator.
double uniform()
Uniform distribution.
Random()
Constructor with default seed.