C语言产生均值为E,方差为D的服从高斯分布的随机变量

#include 
#include 

//产生服从以E为均值,D为方差的高斯分布的随机变量
double gaussrand(double E, double D)
{
	double U1, U2;
	double a, r;
	double X;

	//产生两个服从U(0,1)分布的随机变量
	U1 = (double)rand() / RAND_MAX;
	U2 = (double)rand() / RAND_MAX;

	a = 2 * 3.1415926 * U1;
	r = sqrt(-2 * log(U2));
	X = r*cos(a);

	X = E + D*X;

	return X;
}

你可能感兴趣的:(C语言)