算法请教,有一泊松随机分布(算法给出),要随机的加到512*512个点上,写了一个算法,要执行两分钟,谁能帮看看,简化一下,谢谢了
int poisson(double lambda,double probability)//lambda和probability都是定值20和0.25
{
int k=0;
double r1=rand();//r1为0到32768之间的某值
double r=r1/rand_max;// rand_max=32768为r使在0到1之间
double v=1;
int p;
p=::floor(r+probability);//通过probability随机分布概率控制
while (v>=exp(-lambda))
{
v=v*r;
k++;
}
return (k-lambda)*p;
}
///
int main(void)
{
for(int j=0;j<512;j++)
{
for(int i=0;i<512;i++)
{
g=poisson(20,0.25);
B[i][j]=nAxtualx[i][j]+g;//nAxtualx[i][j]的值已知
if(B[i][j]>255)B[i][j]=255;
}
}
return
}
//
其中泊松分布算法为
double r=r1/rand_max;// rand_max=32768为r使在0到1之间
double v=1;
while (v>=exp(-lambda))
{
v=v*r;
k++;
}
return k;
}