算法请教,有一泊松随机分布(算法给出),要随机的加到512*512个点上,写了一个算法,要执行两分钟,谁能帮看看,简化一下,谢谢了

zuohongying 2002-01-28 11:13:20
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;
}

...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuohongying 2002-01-29
  • 打赏
  • 举报
回复
thank you,let me try agin
msdos 2002-01-28
  • 打赏
  • 举报
回复
你的程序写得错误太多,我编译出现许多错误。
测了一下你的程序,在我的机器上只化了不到一秒。
记住:想让别人帮忙就应该把自己得问题和目标描述清楚,另外
发问之前自己先仔细想,不要太依赖别人
LLnju 2002-01-28
  • 打赏
  • 举报
回复
大家帮我看看,分数由你定: http://www.csdn.net/Expert/topic/503/503163.shtm
mathe 2002-01-28
  • 打赏
  • 举报
回复
double v=1;
while (v>=exp(-lambda))
{
v=v*r;
k++;
}
return k;
}
等价于
return k=ceil(-lambda/log(v));

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧