《利用偽隨機序列理論產(chǎn)生均勻分布的隨機序列》由會員分享,可在線閱讀,更多相關(guān)《利用偽隨機序列理論產(chǎn)生均勻分布的隨機序列(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、利用偽隨機序列理論產(chǎn)生均勻分布的隨機序列
進而產(chǎn)生高斯白噪聲
摘 要:本文介紹了利用偽隨機序列理論產(chǎn)生均勻分布的隨機序列, 進而產(chǎn)生高 斯白噪聲。 高斯白噪聲生成分兩步實現(xiàn)。 本文介紹這兩步中的主流算法, 并對其 性能進行了分析; 討論了該算法組合的具體實現(xiàn), 包括加入對高斯白噪聲均值和 方差的控制。
關(guān)鍵詞: 均勻分布隨機變量 高斯白噪聲 線性同余法
目前,為獲得參數(shù)可調(diào)的高斯白噪聲, 一般采用數(shù)字方法產(chǎn)生。 數(shù)字方法產(chǎn)
生分為兩步: 先產(chǎn)生均勻分布的白噪聲, 然后通過均勻分布的白噪聲獲得高斯白 噪聲。在這兩步中均有多種方法可以選擇。
1 均勻分布白噪聲生成算法的選擇
目前,有
2、三種常用的均勻分布白噪聲生成算法:線性同余算法、
Shift-Register 方法和 Lagged-Fibonacci 算法。
對三種算法的性能進行測試 , 包括隨機數(shù)在分布上的均勻性、隨機數(shù)在隨機
序列中分布的均勻性和隨機序列種子序列的依賴關(guān)系等內(nèi)容。就性能而言, lagged-Fibonacci 算法采用乘最好, lagged-Fibonacci 算法采用加或減次之, 線性同余法又次之。
從實現(xiàn)角度, Shift-Register 方法、 lagged-Fibonacci 算法采用異或和 lagged-Fibonacci 算法采用加或減只需要移位、 異或和加減法等操作, 適合 F
3、PGA 實現(xiàn)。而線性同余算法和 lagged-Fibonacci 算法采用乘需要乘法操作,適合編 程實現(xiàn)。
根據(jù)以上判斷, 結(jié)合實際情況, 采用線性同余法算法來實現(xiàn)產(chǎn)生均勻分布的 隨機序列
2. 均勻分布白噪聲產(chǎn)生高斯白噪聲算法的選擇
目前,比較常用的有地址方法和公式方法
⑴ 查閱相關(guān)資料,可以知道兩種方法產(chǎn)生高斯白噪聲的性能相近。
(2) 從實現(xiàn)角度,前者具體實現(xiàn)時,產(chǎn)生高斯白噪聲速度比較快,但需
要使用Rom來保存映射關(guān)系。為獲得較高性能的高斯白噪聲,需要大容 量的Rom后者具體實現(xiàn)時,不需要使用大容量的內(nèi)存,但需要 n個均
勻白噪聲才可以產(chǎn)生一個高斯白噪聲,產(chǎn)生速度比較慢。
4、
(3) 根據(jù)以上判斷,結(jié)合實際情況,采用公式方法。
3. 實際使用
綜合前面,采用線性同余法算法和公式方法的組合來實現(xiàn)高性能高斯白噪
聲。并且考慮加入對高斯白噪聲的均值和方差的控制!程序流圖如下:
(1)均勻白噪聲模塊中,采用線性同余法。
這里使用的算法表達式如下:
選取足夠大的正整數(shù) M和任意自然數(shù)n0, a, b,由遞推公式:
ni+1 =(a*f(ni)+b)mod M i=0, 1,…,M-1
生成的數(shù)值序列稱為是同余序列。當(dāng)函數(shù) f(n)為線性函數(shù)時,即得到線性同
余序列:
ni+1=(a*n i+b)mod M i=0, 1, …, M-1
以下是
5、線性同余法生成偽隨機數(shù)的程序段:
void uniform(double a,double b,long int *seed)
{ double t;
*seed=2045*(*seed)+1;
*seed=*seed-(*seed/1048576)*1048576;
t=*seed/1048576.0;
t=a+(b-a)*t;
return t;
}
其中種子參數(shù)seed可以任意選擇, a,b可以是o.oiw和o.99w之間的
任何整數(shù)(w是一個字長)
應(yīng)用遞推公式產(chǎn)生均勻分布隨機數(shù)時,式中參數(shù) a,b的選取十分重要
重復(fù)操作,獲得均勻分布的隨機序列
得到的序
6、列如圖:
N
由公式E(x)=
、 Xi得序列的期望,其值為0.505151,與理想值
i =1
0.5十分接近
由統(tǒng)計各區(qū)間所含序列點數(shù),繪得概率密度曲線如下圖:
曲線在0.9與1.1之間波動,與理想曲線接近 (2)高斯白噪聲模塊中,采用公式法
中心極限定理 如果大量的隨機變量組成一個隨機變量,即
N
Y= Xi ,且每個隨機變量Xj對總量Y的影響足夠小,在N趨近于無窮大
i 土
時,Y(近似)服從正態(tài)分布,與Xi的分布律無關(guān)。
公式方法取N= 12時,分布已經(jīng)接近高斯分布了。即對產(chǎn)生的12個均勻 白噪聲按表達式進行操作來獲得高斯白噪聲。
在獲得高斯白噪
7、聲后,通過乘法器和加法器實現(xiàn)高斯白噪聲方差和均值的
調(diào)節(jié)就得到了參數(shù)可調(diào)的數(shù)字高斯白噪聲。因為對高斯分布 X,通過變換
y=卩+ cr,x可以獲得均值為 p方差為 占的高斯分布y。
程序段如下:
//每產(chǎn)生M個高斯點中的一個點需要
N_perpoi nt個均勻分布的隨機數(shù)
// N_perpoint越大越精確
//該程序產(chǎn)生M個均值為MeanNeed,方差為SigmaNeed的高斯隨機數(shù)
for(i=0;ivM;i++)
{ gauss[i]=0;
s=s+i;/修改每次的種子,使產(chǎn)生不同的變量
for(n=0;n
8、iform(a,b,& s);//產(chǎn)生均勻分布的隨機變量
gauss[i]=gauss[i]+sqrt((float)12/N_perpoint)*x[n];
gauss[i]=gauss[i]-(float)sqrt((float)12/N_perpoint)* (N_perpoint/2); gauss[i]=(float)(MeanNeed+SigmaNeed*gauss[i]); mean=mean+gauss[i]/M;/計算實際得到噪聲的期望
} for(i=0;ivM;i++) sigma=sigma+(gauss[i]-mean)*(gauss[i]-mean)/M;
〃計算實際得到噪聲的方差
產(chǎn)生的高斯白噪聲序列如下圖:(期望為0,方差為1,序列長度為1000)
得到的序列期望為0.009893,方差為1.028599,與設(shè)定值接近。
統(tǒng)計各區(qū)間所含序列點數(shù),繪得概率密度曲線如下圖:
與理想曲線接近。
由此說明,采用線性同余法算法和公式方法的組合可以產(chǎn)生高斯白噪聲。 參考文獻:
1. 盛驟 謝式千 潘承毅,概率論與數(shù)理統(tǒng)計,高等教育出版社,
2008.04
2. 常建平 李海林,隨機信號分析,科學(xué)出版社,2008.12
3.
程序見CSDN