正文
正态分布函数c语言代码 正态分布c语言实现
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
请问:C语言中怎么计算正态分布函数?
C语言中计算一个数的N次方可以用库函数pow来实现。
函数原型正态分布函数c语言代码:double pow(double x, double y);
功 能正态分布函数c语言代码:计算x^y的值
返 回 值正态分布函数c语言代码:计算结果
举例如下:
double a = pow(3.14, 2); // 计算3.14的平方
注:使用pow函数时正态分布函数c语言代码,需要将头文件#includemath.h包含进源文件中。
求大神给出用C语言编程生成正态分布随机数的程序,要不是标准正态分布的
一般有两种算法:
算法一产生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;i10;i++)
printf("%lf\t",_sta(mu,sigma));
printf("Algorithm 2:\n");
for(i=0;i10;i++)
printf("%lf\t",_sta2(mu,sigma));
return 0;
}
//由均匀分布的随机数得到正态分布的随机数
#include math.h
float gasdev(idum)
int *idum;
{
static int iset=0;
static float gset;
float fac,r,v1,v2;
float ran1();//产生均匀分布的随机数,可利用系统函数改写
if (iset == 0) {
do {
v1=2.0*ran1(idum)-1.0;
v2=2.0*ran1(idum)-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;
}
}
原理可找本数值算法方面的书看看。
正态分布函数值的c语言代码怎么写
double gaussian(double u) //用Box_Muller算法产生高斯分布的随机数
{
double r,t,z,x;
double s1,s2;
s1=(1.0+rand())/(RAND_MAX+1.0);
s2=(1.0+rand())/(RAND_MAX+1.0);
r=sqrt(-2*log(s2)/log(e));
t=2*pi*s1;
z=r*cos(t);
x=u+z*N;
return x;
}
以前写的一个函数正态分布函数c语言代码,u是均值正态分布函数c语言代码,N是方差
如何在C语言中生成正态分布的随机数,要源代码~谢谢
随机生成一百个1至100的随机数。
#include stdio.h
#include stdlib.h
#include time.h
#define N 100
int main(int argc, char *argv[])
{
int i;
int a[N];
srand(time(NULL));
for(i=0;iN;i++)
a[i]=rand()%100+1;
printf("生成的随机数为:\n");
for(i=0;iN;i++)
{
printf("%5d",a[i]);
if((i+1)%10==0)
printf("\n");
}
system("PAUSE");
return 0;
}
输出结果如下:
生成的随机数为:
41 15 82 1 23 51 16 96 92 17
86 71 87 69 74 5 50 18 42 52
46 34 52 18 40 74 79 35 22 36
65 94 80 91 18 72 61 79 4 11
61 30 95 55 11 19 38 87 78 52
95 30 99 53 99 99 10 79 70 33
91 85 10 99 47 58 93 41 19 71
56 60 10 24 73 87 18 38 13 73
57 22 91 4 37 60 67 58 85 48
46 7 57 100 73 96 60 44 24 23
请按任意键继续. . .
标准正态分布函数的c语言代码 谢啦
double gaussian(double u) //用Box_Muller算法产生高斯分布的随机数
{
double r,t,z,x;
double s1,s2;
s1=(1.0+rand())/(RAND_MAX+1.0);
s2=(1.0+rand())/(RAND_MAX+1.0);
r=sqrt(-2*log(s2)/log(e));
t=2*pi*s1;
z=r*cos(t);
x=u+z*N;
return x;
}
以前写的一个函数,u是均值,N是方差
关于正态分布函数c语言代码和正态分布c语言实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。