真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言計算正態(tài)分布函數(shù)值 c語言生成正態(tài)分布隨機變量

求大神給出用C語言編程生成正態(tài)分布隨機數(shù)的程序,要不是標準正態(tài)分布的

一般有兩種算法:

創(chuàng)新互聯(lián)公司專注于坊子網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供坊子營銷型網(wǎng)站建設,坊子網(wǎng)站制作、坊子網(wǎng)頁設計、坊子網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務,打造坊子網(wǎng)絡公司原創(chuàng)品牌,更為您提供坊子網(wǎng)站排名全網(wǎng)營銷落地服務。

算法一產生12個(0,1)平均分布的隨機函數(shù),用大數(shù)定理可以模擬出正態(tài)分布。

算法二用到了數(shù)學中的雅可比變換,直接生成正態(tài)分布,但此算法在計算很大規(guī)模的數(shù)時

會出現(xiàn)溢出錯誤。

測試程序:

#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;

}

//由均勻分布的隨機數(shù)得到正態(tài)分布的隨機數(shù)

#include math.h

float gasdev(idum)

int *idum;

{

static int iset=0;

static float gset;

float fac,r,v1,v2;

float ran1();//產生均勻分布的隨機數(shù),可利用系統(tǒng)函數(shù)改寫

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;

}

}

原理可找本數(shù)值算法方面的書看看。

正態(tài)分布函數(shù)值的c語言代碼怎么寫

double gaussian(double u) //用Box_Muller算法產生高斯分布的隨機數(shù)

{

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;

}

以前寫的一個函數(shù),u是均值,N是方差

怎樣用C++算正態(tài)分布的積分

你看看計算公式是不是這樣的?

還有精度要多少啊?

查表可知,

F(2.1)?=0.9821

F(-0.3)=1-0.6179

F(2.1)?-?F(-0.3)?=?0.6

源程序

#includestdio.h

#includemath.h

double?f(double?x)

{

return?exp(-x*x/2);

}

double?F(double?a,double?b,double?ep=1e-6)

{

double?h,s1=0,s2=(b-a)*(f(a)+f(b))/2;

int?n,k;

for(int?n=1;fabs(s1-s2)ep;n*=2)

{

h=(b-a)/n;

s1?=?s2;

s2?=?0;

for(int?k=0;kn;++k)

{

s2?+=?h*f(a+(k+0.5)*h);

}

s2?=?(s1+s2)/2;

}

return?s2*sqrt(1/(8*atan(1.0)));

}

int?main()

{

double?c,d;

scanf("%lf",c);

scanf("%lf",d);

printf("%lf",F(c,d));

return?0;

}

請問:C語言中怎么計算正態(tài)分布函數(shù)?

C語言中計算一個數(shù)的N次方可以用庫函數(shù)pow來實現(xiàn)。

函數(shù)原型:double pow(double x, double y);

功 能:計算x^y的值

返 回 值:計算結果

舉例如下:

double a = pow(3.14, 2); // 計算3.14的平方

注:使用pow函數(shù)時,需要將頭文件#includemath.h包含進源文件中。


本文名稱:c語言計算正態(tài)分布函數(shù)值 c語言生成正態(tài)分布隨機變量
URL鏈接:http://weahome.cn/article/dddgcii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部