请教编程高手,如何产生从-5到5的一组正态分布的随机数

需要用VC6.0编一个程序,需要产生20000个数字。必须要正态分布的。那位大侠帮下忙... 需要用VC6.0编一个程序,需要产生20000个数字。必须要正态分布的。那位大侠帮下忙 展开
 我来答
sinba6530d
2010-07-20 · TA获得超过449个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:240万
展开全部
#include <stdio.h>

//产生任意均值与方差的正态分布的随机数
// double u μ 正态分布的均值
// double g σ2=g2 正态分布的方差
// double * r 指向随机数种子
// double grn1() 返回一个均值u 方差g2 正态分布 的随机数

double grn1(double u,double g,double * r)
{ int i,m;
double s,w,v,t;
s=65536.0; w=2053.0; v=13849.0;
t=0.0;
for (i=1; i<=12; i++)
{ *r=(*r)*w+v; m=(int)(*r/s);
*r=*r-m*s; t=t+(*r)/s;
}
t=u+g*(t-6.0);
return(t);
}

int main()
{
double u,g,r;
r=5.0;u=1.0;g=1.5;
printf("\n");
for(int i=0;i<=9;i++){
for(int j=0;j<=4;j++){
printf("%10.7lf ", grn1(u,g,&r));
}
printf("\n");
}
printf("\n");
}

运行结果:

1.2386322 -1.1779938 0.5128021 1.9047699 1.5916595
1.1672211 -0.7747955 1.8593597 1.6634369 1.7311859
0.6563568 -1.4673004 -0.0460358 -0.9860992 0.3062592
3.9247894 -0.5367584 3.5153656 -0.3250885 0.0356293
0.1912689 0.2355804 0.2623138 0.3652191 3.6380463
1.1745453 2.0684662 0.4135590 2.3035736 4.8322601
-0.9066315 0.1806488 2.1878510 2.2087250 1.8370209
-0.3335114 3.2908783 0.8039398 1.2994232 -1.1289215
4.1126556 0.6179047 0.4805756 0.7944183 -1.3468170
1.6506195 2.3804779 2.4365082 1.9124603 0.9020844

参考 常用算法程序集(c语言描述)第三版

第三章 随机数的产生
3.5 产生任意均值与方差的正态分布的一个随机数
百度网友50a765ec1
2010-07-20 · TA获得超过248个赞
知道答主
回答量:53
采纳率:0%
帮助的人:51.4万
展开全部
楼上老兄能否把你的《常用算法程序集(c语言描述)第三版》发我一份,谢谢了~
wrymax@qq.com
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
肖1242178477
2010-07-21
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>

//产生任意均值与方差的正态分布的随机数
// double u μ 正态分布的均值
// double g σ2=g2 正态分布的方差
// double * r 指向随机数种子
// double grn1() 返回一个均值u 方差g2 正态分布 的随机数

double grn1(double u,double g,double * r)
{ int i,m;
double s,w,v,t;
s=65536.0; w=2053.0; v=13849.0;
t=0.0;
for (i=1; i<=12; i++)
{ *r=(*r)*w+v; m=(int)(*r/s);
*r=*r-m*s; t=t+(*r)/s;
}
t=u+g*(t-6.0);
return(t);
}

int main()
{
double u,g,r;
r=5.0;u=1.0;g=1.5;
printf("\n");
for(int i=0;i<=9;i++){
for(int j=0;j<=4;j++){
printf("%10.7lf ", grn1(u,g,&r));
}
printf("\n");
}
printf("\n");
}

运行结果:

1.2386322 -1.1779938 0.5128021 1.9047699 1.5916595
1.1672211 -0.7747955 1.8593597 1.6634369 1.7311859
0.6563568 -1.4673004 -0.0460358 -0.9860992 0.3062592
3.9247894 -0.5367584 3.5153656 -0.3250885 0.0356293
0.1912689 0.2355804 0.2623138 0.3652191 3.6380463
1.1745453 2.0684662 0.4135590 2.3035736 4.8322601
-0.9066315 0.1806488 2.1878510 2.2087250 1.8370209
-0.3335114 3.2908783 0.8039398 1.2994232 -1.1289215
4.1126556 0.6179047 0.4805756 0.7944183 -1.3468170
1.6506195 2.3804779 2.4365082 1.9124603 0.9020844

参考 常用算法程序集(c语言描述)第三版

第三章 随机数的产生
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式