第一篇:產(chǎn)生隨機(jī)數(shù),并實(shí)現(xiàn)0—1分布,驗(yàn)證中心極限定理,實(shí)現(xiàn)標(biāo)準(zhǔn)正態(tài)分布,并畫出分布直方圖
隨機(jī)信號大作業(yè)
題目:產(chǎn)生隨機(jī)數(shù),并實(shí)現(xiàn)0—1分布,驗(yàn)證中心極限定理,實(shí)現(xiàn)標(biāo)準(zhǔn)正態(tài)分布,并畫出分布直方圖。
一.思路
1.產(chǎn)生隨機(jī)數(shù)。首先要確保數(shù)的隨機(jī)性,利用時(shí)間的隨機(jī)性來實(shí)現(xiàn)。
x2.產(chǎn)生0—1分布。隨機(jī)數(shù)是在一定范圍內(nèi)產(chǎn)生的,利用數(shù)值x?(a,b),得b?a
到0-1均勻分布。
3.產(chǎn)生高斯分布。利用中心極限定理——設(shè)從均值為μ、方差為δ²(有限)的任意一個(gè)總體中抽取樣本量為n的樣本,當(dāng)n充分大時(shí),樣本均值的抽樣分布近似服從均值為μ、方差為δ²/n的正態(tài)分布。
二.實(shí)現(xiàn)方法。
1.利用函數(shù)來調(diào)用系統(tǒng)的時(shí)間,產(chǎn)生初值——隨機(jī)數(shù)種子Seed,利用乘同余法產(chǎn)生隨機(jī)數(shù)列:
?rn?xn/M??xn?1??xn
2.產(chǎn)生0—1分布。a[i]=seed/M產(chǎn)生0—1分布數(shù)。在這里要注意處理溢出情況,當(dāng)Seed<0時(shí),用seed=seed+M來消除溢出。
3.利用中心極限定理將0—1分布實(shí)現(xiàn)標(biāo)準(zhǔn)正態(tài)分布。算法實(shí)現(xiàn)步驟如下:隨機(jī)選取n個(gè)隨機(jī)數(shù),利用下公式:
nnx?(?ri?)/ 212i?1n
在這里我們?nèi)=12來化簡計(jì)算:
標(biāo)準(zhǔn)正態(tài)分布數(shù)y=x。
代碼如下:
int seed;
float a[100],b[100]={0};seed=sys.wMilliseconds;//隨機(jī)種子輸入 int i,j,w,k;float x,y;for(w=0;w<5000;w++){
x=0;y=0;for(i=0;i<100;i++){};for(j=20;j<32;j++){};y=x-6;//產(chǎn)生正態(tài)分布隨機(jī)數(shù) printf(“%lf”,y);for(j=0;j<100;j++){} if(-3+0.2*j
4.畫圖程序。
三.代碼
詳細(xì)代碼見gauss.cpp文件。
執(zhí)行結(jié)果如圖所示,表明可基本實(shí)現(xiàn)正態(tài)分布:
(1)
(2)
(3)
(4)
四.總結(jié)
1.輸出圖形與標(biāo)準(zhǔn)正態(tài)分布存在差異,主要是因?yàn)檫x取隨機(jī)數(shù)數(shù)量有限,導(dǎo)致結(jié)果存在差異。但已經(jīng)能初步驗(yàn)證中心極限定理的正確性。
2.本次作業(yè)主要困難在于畫圖的實(shí)現(xiàn)。暴露出編程能力欠缺太多的問題。