一様乱数からボックス=ミューラー法(Box-Muller transform)を使うことによって、2つの独立した正規乱数(g1、g2)を得ることができる。 生成方法は2つあり、通常の方法は三角関数を計算する必要があるので、rand関数が十分速い場合は次の極座標法が適当である。 double a1,a2,b; do { a1=2.0*rand()/RAND_MAX-1.0; a2=2.0*rand()/RAND_MAX-1.0; b=a1*a1+a2*a2; }while(b >= 1.0); b = sqrt( (-2.0 * log( b ) ) / b ); double g1 = a1 * b; double g2 = a2 * b; g1*=std+mean; g2*=std+mean; なお、rand()はあまり質の良い乱数ではないので、より高精度な乱数が必要な場合は、XORSH