/////////////////////////////////////////////// // // ガウス分布の乱数 // /////////////////////////////////////////////// #include #include double random(int *); double gauss_gen(double av, double st,int *idum) { static double r1, r2, s; static int sw = 1; // int *idum2; // idum2 = idum; sw = 1 - sw; // if(sw) // return av + st * r2 * s; do{ r1 = 2.0 * random(idum) - 1.; r2 = 2.0 * random(idum) - 1.; s = r1 * r1 + r2 * r2; } while(s > 1.); s = sqrt(-2. * log(s) / s); return av + st * r1 * s; }