int uniform_int(int, int);
double uniform_real(double, double);
double exponential(double);
+double normal(double, double);
} // namespace random
} // namespace xbt
} // namespace simgrid
return -1 / lambda * log(numerator / divisor);
}
+double normal(double mean, double sd)
+{
+ unsigned long numeratorA = mt19937_gen() - mt19937_gen.min();
+ unsigned long numeratorB = mt19937_gen() - mt19937_gen.min();
+ unsigned long divisor = mt19937_gen.max() - mt19937_gen.min();
+ double z0 = sqrt(-2.0 * log(numeratorA / divisor)) * cos(2 * M_PI * numeratorB / divisor);
+ return z0 * sd + mean;
+}
+
} // namespace random
} // namespace xbt
} // namespace simgrid