加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用蒙特卡罗法产生满足正态分布的随机数

(2010-05-07 20:40:38)
标签:

sigma

正态分布

随机数

r1

r2

蒙特卡罗

教育

分类: 电脑技术

今天做实验需要用蒙特卡罗法产生满足正态分布的随机数,下面是我用C语言编写的程序:(转载请注明出处)

 

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
double random(void)
{
 double r;
 r=rand()/32767.00;
 return r;
}
int sta(double mu,double sigma)
{
 double r1,r2;
 double pi=3.1415926;
 r1=random();
 r2=random();
 return (int)(sqrt(-2*log(r1))*cos(2*pi*r2)*sigma+mu);
}
int main()
{
 int i,n;
 double mu,sigma;
 FILE *fp;
 fp=fopen("data.dat","w");
 srand((unsigned)time(NULL));
 printf("please input mu:");
 scanf("%lf",&mu);
 printf("please input sigma:");
 scanf("%lf",&sigma);
 printf("please input n:");
 scanf("%d",&n);
 printf("Random number:\n");
 for(i=0;i<n;i++)
 {
  printf("%d\n",sta(mu,sigma));
  fprintf(fp,"%d\n",sta(mu,sigma));
 }
 fclose(fp);
 return 0;
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有