<>经典的数值算法书<<numerical recipe in C>> 中给出的代码如下,我就不解释了。如果不明白请去图书馆查一查就行了,这么经典的书图书馆都会有的,而且还有中文版,不过比较的旧了,不知有没有新版本的。</P><>float gasdev(int *idum)
// Returns a normally distributed deviate with zero mean and unit variance,
// using ran1(idum) as the source of uniform deviates.
{
static int iset=0;
static float gset;
float fac,r,v1,v2;</P><> if (iset == 0) {
do {
v1=2.0*ran1(idum)-1.0;
v2=2.0*ran1(idum)-1.0;
r=v1*v1+v2*v2;
} while (r >= 1.0);
fac=sqrt(-2.0*log(r)/r);
gset=v1*fac;
iset=1;
return v2*fac;
} else {
iset=0;
return gset;
}
}
</P>