58 #define Mbig 1000000000.
59 #define Mseed 161803398.
60 #define imod(x, y) ((x) - ((x) / (y)) * (y))
61 static short iff = 0, inext, inextp;
75 for (i = 0; i < 55; i++)
77 ii =
imod(21 * (i + 1), 55);
86 for (k = 0; k < 4; k++)
88 for (i = 0; i < 55; i++)
90 Ma[i] -= Ma[
imod(i + 30, 55)];
111 mj = Ma[inext] - Ma[inextp];
128 #ifdef RAND_NORM_SAVE
129 static short iset = 0;
131 double r, v1, v2, fact;
136 v1 = 2.0 *
Rand(1) - 1.0;
137 v2 = 2.0 *
Rand(1) - 1.0;
138 r = v1 * v1 + v2 * v2;
139 }
while (r >= 1.0 || r == 0.0);
140 fact = sigma * sqrt(-2. *
log(r) / r);
148 double r, v1, v2, fact;
151 v1 = 2.0 *
Rand(1) - 1.0;
152 v2 = 2.0 *
Rand(1) - 1.0;
153 r = v1 * v1 + v2 * v2;
154 }
while (r >= 1.0 || r == 0.0);
155 fact = sigma * sqrt(-2. *
log(r) / r);
165 double r =
Rand(), d = (double)(hi - low);
171 int i = (int)(d + 0.5) + low;
180 double r =
Rand(), d = (hi - low);
194 return xlast +
RandNorm(sigma) * dt;
200 double RandExpCor(
double dt,
double sigma,
double T,
double xlast)
202 return exp(-dt / T) * xlast +
RandNorm(sigma);