问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求大神给出用C语言编程生成正态分布随机数的程序,要不是标准正态分布的

发布网友 发布时间:2022-04-28 13:11

我来回答

1个回答

热心网友 时间:2023-10-09 21:48

一般有两种算法:
算法一产生12个(0,1)平均分布的随机函数,用大数定理可以模拟出正态分布。
算法二用到了数学中的雅可比变换,直接生成正态分布,但此算法在计算很大规模的数时
会出现溢出错误。
测试程序:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
double _random(void)
{
int a;
double r;
a=rand()%32767;
r=(a+0.00)/32767.00;
return r;
}
double _sta(double mu,double sigma)
{
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;
}
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 ;
}
int main()
{
int i;
double mu,sigma;
srand( (unsigned)time( NULL ) );
mu=0.0;
sigma=1.0;
printf("Algorithm 1:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta(mu,sigma));
printf("Algorithm 2:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta2(mu,sigma));
return 0;
}
//由均匀分布的随机数得到正态分布的随机数
#include <math.h>
float gasdev(im)
int *im;
{
static int iset=0;
static float gset;
float fac,r,v1,v2;
float ran1();//产生均匀分布的随机数,可利用系统函数改写
if (iset == 0) {
do {
v1=2.0*ran1(im)-1.0;
v2=2.0*ran1(im)-1.0;
r=v1*v1+v2*v2;
} while (r >= 1.0);
fac=sqrt(-2.0*log(r)/r);
gset=v1*fac;
iset=1;
return v2*fac;
} else {
iset=0;
return gset;
}
}
原理可找本数值算法方面的书看看。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2023文科男生最吃香的专业 哪些专业好就业 在南京想找上海音乐学院的老师,怎么找? 荔枝核怎么服用-荔枝核煮水一般煮几颗合适 属虎适合什么名字2022年新生儿 有内涵热门名字精选 国内读研好,还是出国读研好 出国读研和国内读研哪个更好 在一个比例中,如果两个外项互为倒数。那么两个内向的什么是一?_百度知 ... 两个外项互为倒数,一个内向是8分之3,另一个内项是多少【怎样求出来... 在一个比例中,两个外向互为倒数,其中一个内项是8,另一个内项是_百度... 在比例中两个外项互为倒数,其中一个内向是2.75,另一个内项是多少_百度... 帮忙用excel VBA产生一组正态分布的随机数 excel怎么生成正态随机函数 EXCEL生成正态分布随机数(整数) EXECL如何生成正态分布随机数? 用excel产生服从正态分布的随机数值 如何利用EXECL生成正态分布随机数 黄油是什么油?在家里可以提取吗? 黄油到底是什么油?是如何制作的? 哪些是小金属股票 钼,镁,锗等总市值低于40亿以下的小市值股票有哪些 榆林镁业股票代码 海尔滚筒洗衣机设置预约时间怎么不运行? 用纯C语言 怎样编程,解析HTTP协议。 海尔洗衣机XQG60__10866A怎样取消预约时间 海尔玫瑰钻洗衣机预约功能怎么解除 海尔神童王洗衣机我中途打开后预约时间怎么取消 你好,我想问一下海尔自动洗衣机怎么取消预约 怎么孵化鲫鱼苗 鲫鱼的饲养方法 养殖鲫鱼的养殖条件是? 用matlab产生1000个服从某种条件下的正态分布的随机数 matlab如何产生二维正态分布随机数 Matlab如何生成符号正态分布N(2,3)的2000个随机数? 如何生成正态分布随机数marsaglia和bray sas 怎么生成正态分布的随机数 银行网点负责人对&quot;守纪律,讲规矩&quot;的心得 谈谈如何当好单位守纪律讲规矩的吹哨人 报林业职业学校的理由 广东省3十3的中专学校有哪些 以前的广州林业学校现在叫什么学院? 广州工商学院有五年一贯制吗 为什么ps4的游戏价格和pc差那么多 广东省林业职业技术学校,有谁在里面读书,觉得这间学校怎么样? 为什么PS4的游戏价格那么贵 广州市初中毕业五年一贯制排前几名公办学校有哪些 为什么ps4游戏那么贵 为什么ps4 游戏特别贵??? 中职园林学校有哪几所? ps4游戏为什么那么贵 广东省林业职业技术学校录取分数线是多少