谁能解以正态分布产生数据的算法

fuladuo 2002-10-16 10:30:30
举例:利用该算法读取1-10之间的这十个数字,被读取的次数符合正态分布
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dcyu 2002-10-16
  • 打赏
  • 举报
回复
还有一种算法是书上介绍的,但是我测试过,取的次数很多的话,会有溢出的可能。如下:
double _sta2(double mu,double sigma)
{
double r1,r2;

r1=_random();
r2=_random();

return sqrt(-2*log(r1))*cos(2*M_PI*r2)*sigma+mu ;

}
dcyu 2002-10-16
  • 打赏
  • 举报
回复
double _random(void)
{
int a;
double r;

a=rand()%32767;
r=(a+0.00)/32767.00;

return r;

}

double _sta(double mu,double sigma)
{
double _random(void);

int i;
double r,sum=0.0;

if(sigma<=0.0) { printf("Sigma<=0.0 in _sta!"); exit(1); }
for(i=1;i<=12;i++)
sum = sum + _random();
r=(sum-6.00)*sigma+mu;

return r;

}
函数_sta可以产生均值为mu,方差为sigma的正态分布。
主要是利用了大数定理,产生了12个(0,1)分布的随机数进行计算。

33,028

社区成员

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

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