Я выполнил определение PDF, данное в http://www.mathworks.com/help/stats/normal-distribution.html , и придумал следующее:
const double DBL_EPS_COMP = 1 - DBL_EPSILON; // DBL_EPSILON is defined in .
inline double RandU() {
return DBL_EPSILON + ((double) rand()/RAND_MAX);
}
inline double RandN2(double mu, double sigma) {
return mu + (rand()%2 ? -1.0 : 1.0)*sigma*pow(-log(DBL_EPS_COMP*RandU()), 0.5);
}
inline double RandN() {
return RandN2(0, 1.0);
}
Возможно, это не лучший подход, но это довольно просто.