一、概念
白色雜訊(White Noise)
所有頻率具有相同能量的隨機雜訊稱為白色雜訊。白色雜訊的功率譜密度在整個頻域內均勻分布。白色雜訊是一種功率頻譜密度為常數的隨機訊號或隨機過程。換句話說,此訊號在各個頻段上的功率是一樣的,由於白光是由各種頻率(顏色)的單色光混合而成,因而此訊號的這種具有平坦功率譜的性質被稱作是“白色的”,此訊號也因此被稱作白色雜訊。相對的,其他不具有這一性質的雜訊訊號被稱為有色雜訊。
白色雜訊的白是對於頻域來說的。
理想的白色雜訊具有無限頻寬,因而其能量是無限大,這在現實世界是不可能存在的。實際上,我們常常將有限頻寬的平整訊號視為白噪音,因為這讓我們在數學分析上更加方便。然而,白色雜訊在數學處理上比較方便,因此它是系統分析的有力工具。一般,只要一個雜訊過程所具有的頻譜寬度遠遠大於它所作用系統的頻寬,並且在該頻寬中其頻譜密度基本上可以作為常數來考慮,就可以把它作為白色雜訊來處理。例如,熱雜訊和散彈雜訊在很寬的頻率範圍內具有均勻的功率譜密度,通常可以認為它們是白色雜訊。
白色雜訊的機率密度函數(樣本統計長條圖)均勻分布,因此又稱作均勻白色雜訊或隨機雜訊。
高斯雜訊(Gaussian Noise)
是指它的機率密度函數服從高斯分布(即常態分佈)的一類雜訊。高斯雜訊的所謂高斯是對於幅度的機率密度分布來說的。
高斯白色雜訊
如果一個雜訊,它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的,則稱它為高斯白色雜訊。熱雜訊和散粒雜訊屬於高斯白色雜訊。
所謂高斯白色雜訊中的高斯是指機率分布是正態函數,而白色雜訊是指它的二階矩不相關,一階矩為常數,是指先後訊號在時間上的相關性。這是考查一個訊號的兩個不同方面的問題。
隨機序列
隨機數學中的概念,是指物理世界中隨機出現的事件的不確定序列,它是隨機產生,不可預測,不會重複的序列。由隨機序列構成的訊號稱為隨機雜訊,即均勻白色雜訊。
偽隨機序列
如果一個序列,一方面它是可以預先確定的,並且是可以重複地生產和複製的;一方面它又具有某種隨機序列的隨機特性(即統計特性),我們便稱這種序列為偽隨機序列。
偽隨機序列具有某種隨機特性,但其序列是確定的。它們是通常由數字電腦產生確定序列,然而他們卻具有某種隨機序列的隨機特性。因為同樣具有隨機特性,無法從一個已經產生的序列的特性中判斷是真隨機序列還是偽隨機序列,只能根據序列的產生辦法來判斷。偽隨機序列系列具有良好的隨機性和接近於白色雜訊的相關函數(δ函數),並且有預先的可確定性和可重複性。這些特性使得偽隨機序列得到了廣泛的應用,特別是在CDMA系統中作為擴頻碼已成為CDMA技術中的關鍵問題。
常用的偽隨機序列有:m序列、Gold 序列、Walsh序列等。
偽隨機序列是電腦產生各種雜訊的基礎。
(偽)隨機數產生器(RNG)
是指產生(偽)隨機序列(通常是整型)的演算法或方法。
二、雜訊產生方法
產生偽隨機序列(白色雜訊)
關於偽隨機序列的產生,目前有以下幾種常用的演算法:
● 線性同餘演算法(Matlab 4.0及之前版本採用 <rand函數>)
● Shift-Register 方法
● Lagged-Fibonacci演算法(Matlab 5.0及之後版本採用 <rand函數>)
● Monte Carlo 方法
● Mid-square method, 1940s
● Mersenne Twister, 1988
● Combined Generators (Combine the outputs of two or more RNGs, eg, using)
◆ The universal generators
Combine 2 generators: Lagged Fibonacci, Xn+1 = (Xn - k) mod 1677213
◆ The KISS generator (Keep It Simple, Stupid)
Combine three simple generators: congruential generator, 3-shift generator, Multiply-with-carry generator
● Blum-Blum-Shub (BSS) generators, 1986
● The HAVEGE generator
偽隨機序列衡量標準
● Fast, especially in simulation 快
● Well distributed (pass all statistical tests known)
● Independent 獨立的
● Portable and reproducible 在不同的電腦能重複產生 (for verifying simulation results)
● Long periods (for deterministic RNGs) 長周期
● Unpredictable and irreproducible (for cryptography)
● Security 保密 (for cryptography)
● Large seed spaces (for deterministic RNGs) 種子的選擇要夠多
偽隨機序列的品質檢驗
擬合優度測試(Goodness-of-fit test),用於測量產生的樣本分布與期望分布之間的差異。
有以下幾種常用的測試方法:
● Pearson's chi-square test
● The Kolmogorov-Smirov (KS) test (最常用)
● The Anderson and Darling (AD) test
統計檢驗—— The collision test (碰撞檢驗)
● Knuth's collection test
● NIST 建議的16種用於檢驗密碼安全的統計測試
◆ Frequency (Monobit) Test
◆ Frequency Test within a Block
◆ Runs Test
◆ Tests for the longest Run of Ones in a Block
◆ Binary Matrix Rank Test
◆ Discrete Fourier Transform (Spectral) Test
◆ Non-overlapping Template Matching Test
◆ Overlapping Template Matching Test
◆ Maurer’s “Universal Statistical” Test
◆ Lampel-Ziv Compression Test
◆ Linear Complexity Test
◆ Serial Test
◆ Approximate Entropy Test
◆ Cumulative Sums (Cusum) Test
◆ Random Excursions Test
◆ Random Excursions Variant Test
● Diehard RNGs examining package (最常用)
◆ Birthday Spacings (三項必測之一,通過此三項測試即可通過其它所有測試)
◆ GCD (三項必測之一)
◆ Gorilla 大猩猩 (三項必測之一)
◆ Overlapping Permutations
◆ Binary Rank nn
◆ Binary Rank 68
◆ Monkey Tests OPSO, OQSO, DNA
◆ Count the 1’s
◆ Count the 1’s specific
◆ Parking Lot
◆ Minimum Distance
◆ Random Spheres
◆ The Squeeze
◆ Overlapping Sums
◆ Runs Up and Down
◆ The Craps
將偽隨機數序列轉為其它分布
一個RNG的輸出是均勻分布(如[0, 2^32-1])的隨機整數。但在實際應用中,我們經常使用其它分布的隨機數,比如:
● Uniform in [0, 1) (均勻分布)
● Normal (常態分佈) (即高斯雜訊)
● Exponential (指數分布)
● Gamma (伽瑪分布)
● Poisson
● Binomial (二項式分布)
這就需要轉換。常用的轉換方法有:
● Density distribution function (分布密度函數法)
● The acceptance-rejection method (接受-拒收法)
● The Monty Python Method (拼湊法)
● The Ziggurat method (速度快)
● The alias method for generating discrete variates
● The straightforward table look up method (查表法)
產生常態分佈的偽隨機序列(高斯白色雜訊)
依照上節內容,高斯白色雜訊的產生通常分為兩步:先產生均勻分布的白色雜訊,然後通過均勻分布的白色雜訊獲得高斯白色雜訊。
目前有以下幾種常用的方法:
● Box-Muller 方法(Matlab 4.0及之前版本採用 <randn函數>)
● Ziggurat 方法(Matlab 5.0及之後版本採用 <randn函數>)
(待續……)