|
/***************************************************
* 产生高斯分布的函数,返回产生的符合条件的数值个数
****************************************************/
void GuassGen(float *p1,float *p2, float *p3,float *p4)
{
N1 = 0;//因为这个变量为全局变量,所以这里一定要对其进行重新计数操作
double temp = 0.0;
float *w1 = new float[Num1];//一个暂时保存数值的数组来进行判断
for(int i=0;i<Num1;i++)
{
p1[i] = 2*p1[i]-1;
p2[i] = 2*p2[i]-1;
w1[i] =(float)pow((double)p1[i],2.0) +(float)pow((double)p2[i],2.0);
if (w1[i] < 1)
{
temp = w1[i];
w1[i] = (float)sqrt((-2*log(temp))/temp);
p3[N1] = p1[i] * w1[i];
p4[N1] = p2[i] * w1[i];
p3[N1] = p3[N1]*var + mean;
p4[N1] = p4[N1]*var + mean;
N1++;
}
}
return ;
}
最近发现这个函数,打算研究下,算法如上,跟高斯正态分布函数模型对应不上,不是很理解,有没有懂得人呢? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|