專利名稱:一種均勻分布隨機數發生器及均勻分布隨機數產生方法
技術領域:
本發明涉及信息電子領域,尤其涉及一種均勻分布隨機數產生方法及一 種均勻分布隨機數發生器。
背景技術:
隨機數廣泛應用于信息電子領域。比如在移動通信系統的設計當中,往 往需要在實驗室對無線信道的各種特性進行模擬,并對通信系統算法在這些 信道下的表現或性能進行仿真和評估。用信道模擬的手段來測試通信系統, 和在實際通信環境測試相比,可控性和可重復性強,可以節約大量人力物力。信道模擬技術的實現方法一般可以分為軟件仿真和半實物仿真。前者的典型例子是利用Matlab等仿真軟件對通信系統進行建^t,這種方法實現相 對簡單,但是無法應用于真實系統的測試,因此仿真真實度不高,且仿真時 間往往很長。而半實物仿真技術在實時的環境下運行仿真模型,并實現與實 物的連接,這樣大大提高了仿真結果的置信度,縮短了仿真時間.采用半實物仿真來對信道進行模擬,相對軟件仿真的難點之一在于需要 快速,實時的實現各種信道模擬算法。這些算法在軟件仿真中, 一般采用浮 點運算實現,既不需要考慮其精度,也不需要太多考慮其實時性,但是在半 實物仿真中,由于需要和實際系統對接,且其實現的載體往往是FPGA (Field-Programmable Gate Array,現場可編程門陣列),ASIC ( Application Specific Intergrated Circuits,專用集成電i 各)或DSP ( Digital Signal Processer,數字信號處理器)之類的定點器件,因此,就需要考慮實時性的問題,要求 運算盡量簡單,便于實現。以最常見的高斯白噪聲模擬為例,其常用的方法為逆變換法,具體步驟 如下
第一步,產生[O, l]區間均勻分布隨機變量U;第二步,記高斯分布變量的累積分布函數為&(z),其反函數為i^(Z),令x《(") (1) 則X為所需的高斯分布隨機變量。上述過程中,第一步需要產生均勻分布隨機變量,事實上,均勻分布隨 機數發生器是生成其他概率分布變量的基礎,在其他信道特性的模擬中也廣 泛使用。譬如,進行信道慢衰落特性的模擬時,需要生成對數正態分布的隨 機變量,其前提也是先生成均勻分布隨機變量。由此可見,均勻分布隨機數發生器是信道模擬中最基本的技術之一。應 用最多的均勻分布隨機數發生器算法是線性同余法,該算法描述如下定義如下遞推運算x,+=+ c)(mod = 0,1,2,…) (2 )其中Xj的初值記為xQ,稱為線性同余發生器的種子數,a和c分別稱為 乘子和增量,M叫模數,這些均為非負整數,而且,a, c及Xi均小于M。 上式的xi+1是axj+c被M整除后的余數,稱為xi+1與ax汁c對模M同余。如 果挑選適當的a、 c、 M,可以使Xi滿足均勻分布隨機變量的各種重要特性,也即Xi就是所需產生的均勻分布隨機數。對于式(2)在實時實現時的主要困難在于求余運算。 一般來說,如果 M不為2的整數次方,那么直接求余將耗費大量時間和資源,且隨著M的 增大,這個問題尤其突出。而恰恰在很多算法中,M并不是2的整數次方, 以最常用的"ran0"隨機數發生器為例,該隨機數發生器由劉易斯(Lewis), 古德曼(Goodman)和米勒(Miller)于1969年4是出,其參數耳又法如下a = 75 =16807,M = 231 _l,c = 0 (3)該隨機數發生器經過了大量隨機數檢驗,并被廣泛使用在軟件仿真中, 注意到此時M不是2的整數次方,且M為31位二進制數,對如此大的數 求余將非常耗費時間,在FPGA之類的數字器件實現時,還會大量消耗資源, 很難滿足實時性要求。
綜上所述,均勻分布隨機數發生器是信息電子領域的重要技術,但在對 實時性要求較高的場合,直接采用通用算法不能滿足實時性要求。發明內容本發明要解決的技術問題是解決現有線性同余法實現均勻分布隨機數 發生器的時候,計算量太大,無法滿足實時性要求的問題,提供一種可以在FPGA或DSP等定點器件里很方便、快速實現的均勻分布隨機數產生方法及 系統。為解決上述問題,本發明提出了一種均勻分布隨機數發生器,包括初始 化模塊,選擇器,乘加器,以及延遲器,初始化模塊產生隨機數發生器的種 子,輸入到所述選擇器,所述選擇器在初始時選擇所述初始化模塊輸入的數 值作為輸出,進入正常工作狀態,在正常工作狀態時所述選擇器選擇延遲器 輸入的數值作為輸出,選擇器的輸出輸入到所述乘加器,所述乘加器將選擇 器的輸出與a相乘再加c,得到乘加器的輸出,其特征在于,還包括第一移 位模塊,第二移位模塊,第一加法器,第三移位模塊,第四移位模塊,第二 加法器,其中,所述乘加器的輸出輸入到第 一移位^t塊和第 一加法器,第 一移位^^莫塊對 輸入的數據進行右移n位,得到第一移位模塊的輸出,輸入到第二移位模塊 和第一加法器;第二移位模塊對輸入的數據左移n位,得到第二移位模塊的輸出,輸入 到第一加法器;第一加法器將第一移位模塊和乘加器輸出的數值相加,減去第二移位才莫塊輸出的數值,再加上l,得到第一加法器的輸出值,將其輸入到第三移位 模塊和第二加法器;第三移位模塊對輸入值右移n位,輸出至第四移位模塊和第二加法器; 第四移位模塊將輸入值左移n位,輸出至第二加法器;第二加法器將第三移位模塊和第 一加法器的輸出的數值相加,減去第四 移位模塊輸出的數值,再減去l,得到第二加法器的輸出值,即得到本次輸
出的隨機數,并將其輸入延遲器;延遲器把本次輸出的隨機數進行延遲,輸出到所述選擇器。進一步地,上述發生器還可具有以下特點,所述3=75=16807。 進一步地,上述發生器還可具有以下特點,所述c-0。 進一步地,上述發生器還可具有以下特點,所述11=31。為解決上述問題,本發明還提出了一種均勻分布隨機數產生方法,包含 如下步驟步驟一,任意獲取數值x。, a與x。相乘再加c得到z, a, c均為非負整數;步驟二,將z使用移位器右移n位得到zl, zl再使用移位器左移n位 得到z2,其中2"" + £"<22";步驟三,將z和zl相加之和減去z2,其結果為y;步驟四,將y加上1然后使用移位器右移n位得到yl, yl再使用移位 器左移n位得到y2,將y和yl相加之和減去y2得到x,+,,即本次產生的隨 機數;步驟五,《+1延遲,與a相乘再加c得到z,返回步驟二。進一步地,上述方法還可具有以下特點,參數取法為a=75=16807。進一步地,上述方法還可具有以下特點,所述0=0。進一步地,上述方法還可具有以下特點,所述11=31。本發明所述的均勻分布隨機數發生器用移位運算和加減運算替代了 一 般線性同余器所需的求余運算,與一般的線性同余器相比,顯著降低了計算 量,非常便于FPGA或DSP等嵌入式處理器實現,可以滿足各種需要實時 生成均勻分布隨機數發生器的場合。
圖1是現有式(2 )和(3 )描述的均勻分布隨機數發生器的結構示意圖。圖2是本發明所述的線性同余均勻分布隨機數發生器的結構示意圖。 圖3是本發明線性同余均勻分布隨機數產生方法流程圖。
具體實施方式
通過本發明的方法,可以把線性同余隨機數發生器的求余運算轉化為便 于硬件實現的乘法運算和移位運算,從而解決求余運算耗時過長的問題。本發明涉及的快速算法針對背景技術中提到包括ran0方法在內的才莫凄史 M=2n-1時的求余方法,該方法可以滿足工程中大多數情況下對均勻分布隨 機數的產生要求,此外,通過類似于本發明的推導過程,可以方便的把這種 快速算法推廣到其他參數下的線性同余法。下面介紹本發明的具體推導過程。在n為任意正整數,c為負整數, M = 2"-1,且滿足2"fl + c〈22"的情況下,式(2)可以等效為L(""/2"」x(2"-1) (4)其中_y = z-Lz/2"」x(2"-l) (5) z = ax, + c ( 6 )其中L」為向下取整符號,即取小于向下取整符號內數值的最大整數。即利用(4) , (5) , (6)式代替式(2),具體的推導如下,假設W(2"-l)的商為d,余數為e, z/2"的商為f,余數為g,則根據被 除數,除數,商和余數的相互關系可以得到下式z = "x(2"-l) + e = /x2"+g = /x(2"-+ / + g (7)(8)由式(5),式(7),式(8),可以得到_y = z-Lz/2"」x(2"-l) = / + g (9) 又由推導前提的數值范圍以及式(6),可得 ze
(10) 進一步得到;;=(2" -1) x 2 (11) 下面分別討論;v〈2"-l以及2" -l<_y<(2" -1)x2的兩個區間內命題是否成立。對于>;<2"-1,顯然Lo + l)/2"」=0 (12) 并且根據式(2 ) , ( 7 ) , ( 9 ),還有xi+,=y (13) 結合式(12)和式(13),可以得到這就是所需證明的式(4),可見在>;<23'-1式命題成立。對于2"-l<y<(2"-l)x2,顯然有廣」=1 (14)并且根據式(2 ) ,( 7 ) ,( 9 ),有x,+1=y_(2"_l) ( 15)結合式(l4)和式(l5),可以得到A+1=y-L("l)/2"」x(2"-l)這就是所需證明的式(4),可見在231-1^>;<(231-1)><2命題成立。因此對于所有y的可能取值范圍,本命題成立,證畢。上面的推導表明,式(2 )所描述的隨機數發生器可以通過式(4 ) (6 ) 等效實現,其中式(4) (5)可以進一步寫成A+i =少-[(O +1)》")《"]+ [O +1)》"] (16 )y = z-[(z》w)《"]+[z》w] (17)這樣,式(6),式(16)以及式(17)就構成了本發明所提出的均勻 分布隨機數發生器的實現公式,上述>>11代表右移n位,<<n代表左移n位。
對比式(2)和式(16) , (17)可以看出,本發明所述的均勻分布隨 機數發生器實現方法用移位運算和加減運算替代了一般線性同余器所需的 求余運算,與一般的線性同余器相比,顯著降低了計算量,非常便于FPGA 或DSP等嵌入式處理器實現,可以滿足各種需要實時生成均勻分布隨機數 發生器的場合。下面將結合附圖及實施例對本發明的技術方案進行更詳細的說明。圖1是現有式(2 )和(3 )描述的均勻分布隨機數發生器的結構示意圖。 圖中初始化模塊產生隨機數發生器的種子,并作為乘加器模塊的初始輸入, 乘加器模塊完成""x,+c的運算,求余模塊完成mod M的運算,延遲器把 本次輸出的隨機數進行延遲,并作為下 一次運算中乘加器的輸入。圖2是本發明提出的均勻分布隨機數發生器結構示意圖,和圖1的區別 在于用 一 系列移位和加減模塊代替了求余模塊。該隨機數發生器包括初始化 模塊,乘加器,選擇器,延遲器,還包括第一移位模塊,第二移位模塊,第 一加法器,第三移位模塊,第四移位模塊,第二加法器,其中,圖中初始化模塊產生隨機數發生器的種子,并作為乘加器模塊的 初始輸入,乘加器模塊完成z^^x,+c的運算;所述選擇器在初始時選擇所述初始化模塊輸入的數值作為輸出,進入正 常工作狀態,在正常工作狀態時所述選擇器選擇延遲器輸入的數值作為輸 出,選"^器的輸出輸入到所述乘加器;乘加器的輸出輸入到第 一移位模塊和第 一加法器,第 一移位模塊對輸入 的數據進行右移n位,第一移位模塊的輸出輸入第二移位模塊和第一加法 器;第二移位模塊對輸入的數據左移n位,得到第二移位模塊的輸出,輸入 到第一加法器;第一加法器將第一移位模塊和乘加器的輸出相加,減去第二移位模塊的 輸出,再加上l,得到第一加法器的輸出值,將其輸入到第三移位模塊和第 二加法器;第三移位模塊對輸入值右移n位,輸出至第四移位模塊和第二加法器; 第四移位模塊將輸入值左移n位,輸出至第二加法器;第二加法器將第三移位;漠塊和第 一加法器的輸出相加,減去第四移位才莫 塊的輸出,再減去1,得到第二加法器的輸出值,即得到本次輸出的隨機數, 并將其輸入延遲器;延遲器把本次輸出的隨機數進行延遲,并作為下 一次運算中乘加器的輸入。圖3所示為本發明線性同余均勻分布隨機數產生方法流程圖,具體步驟 如下,步驟310,隨機數發生器處于初始狀態,產生初值x。,作為隨機數發生 器的種子;步驟320,如果隨機數發生器處于初始態,x。作為乘加器輸入,并計算 z = axQ+c,隨后轉入正常運行狀態;如果處于正常運行狀態,x,作為乘加器 輸入,計算PAcc,+c;步驟330,計算(z >>")<<";即對z進行移位運算,首先z使用移位器右移n位得到zl, zl再使用 移位器左移n位得到z2。步驟340, 計算_y = z - [(z》w)《w] +1> w];即y=z-z2+zl;步驟350,計算x,+1 = _y - [((;; +1) ") "] + +1) "]將y + 1然后使用移位器右移n位得到yl, yl再使用移位器左移n位得 到y2, x,+1=y-y2+yl。步驟360,對x,+,延遲得到;c,,返回第二步。這里的延遲和現有技術是一 樣的,如果是軟件實現,把值(即x,w)存儲起來,用時取出。對于硬件實 現可以用常規的類似D觸發器組實現。對于ran0方法,只要把上述方法和裝置中的n設為31, c設為O, a設 為16807即可。
通過以上分析可知,本發明提出的均勻分布隨機數發生器實現方法,只 包含乘法運算,加減運算和移位運算,避免了求余運算,從而解決了實時性的問題,可以非常方便的在各種數字器件(如FPGA, ASIC或DSP)中實現。當然,本發明還可有其他多種實施例,在不背離本發明精神及其實質的 形,但這些相應的改變和變形都應屬于本發明所附的權利要求的保護范圍。
權利要求
1、一種均勻分布隨機數發生器,包括初始化模塊,選擇器,乘加器,以及延遲器,初始化模塊產生隨機數發生器的種子,輸入到所述選擇器,所述選擇器在初始時選擇所述初始化模塊輸入的數值作為輸出,進入正常工作狀態,在正常工作狀態時所述選擇器選擇延遲器輸入的數值作為輸出,選擇器的輸出輸入到所述乘加器,所述乘加器將選擇器的輸出與a相乘再加c,得到乘加器的輸出,其特征在于,還包括第一移位模塊,第二移位模塊,第一加法器,第三移位模塊,第四移位模塊,第二加法器,其中,所述乘加器的輸出輸入到第一移位模塊和第一加法器,第一移位模塊對輸入的數據進行右移n位,得到第一移位模塊的輸出,輸入到第二移位模塊和第一加法器;第二移位模塊對輸入的數據左移n位,得到第二移位模塊的輸出,輸入到第一加法器;第一加法器將第一移位模塊和乘加器輸出的數值相加,減去第二移位模塊輸出的數值,再加上1,得到第一加法器的輸出值,將其輸入到第三移位模塊和第二加法器;第三移位模塊對輸入值右移n位,輸出至第四移位模塊和第二加法器;第四移位模塊將輸入值左移n位,輸出至第二加法器;第二加法器將第三移位模塊和第一加法器的輸出的數值相加,減去第四移位模塊輸出的數值,再減去1,得到第二加法器的輸出值,即得到本次輸出的隨機數,并將其輸入延遲器;延遲器把本次輸出的隨機數進行延遲,輸出到所述選擇器。
2、 如權利要求1所述的隨機數發生器,其特征在于,所述&=75=16807。
3、 如權利要求1所述的隨機數發生器,其特征在于,所述c二0。
4、 如權利要求1或2或3所述的隨機數發生器,其特征在于,所述n=31 。
5、 一種均勻分布隨機數產生方法,包含如下步驟步驟一,任意獲取數值x。, a與x。相乘再加c得到z, a, c均為非負整 數;步驟二,將z使用移位器右移n位得到zl, zl再使用移位器左移n位 得到z2,其中2"" + ^<22";步驟三,將z和zl相加之和減去z2,其結果為y;步驟四,將y加上1然后使用移位器右移n位得到yl, yl再使用移位 器左移n位得到y2,將y和yl相加之和減去y2得到《+1,即本次產生的隨 機數;步驟五,x,+,延遲,與a相乘再加c得到z,返回步驟二。
6、 如權利要求5所述的方法,其特征在于,參數取法為a=75=168 07。
7、 如權利要求5所述的方法,其特征在于,所述c二0。
8、 如權利要求5或6或7所述的方法,其特征在于,所述11=31。
全文摘要
一種均勻分布隨機數發生器,包括初始化模塊,選擇器,乘加器,以及延遲器,還包括第一移位模塊,第二移位模塊,第一加法器,第三移位模塊,第四移位模塊,第二加法器。一種均勻分布隨機數產生方法一,獲取數值x<sub>0</sub>,a與x<sub>0</sub>相乘再加c得到z,a,c均為非負整數;二,將z使用移位器右移n位得到z1,z1再左移n位得到z2,其中2<sup>n</sup>a+c<2<sup>2n</sup>;三,將z和z1相加之和減去z2,其結果為y;四,將y加上1然后右移n位得到y1,y1再使用移位器左移n位得到y2,將y和y1相加之和減去y2得到x<sub>i+1</sub>,即本次產生的隨機數;五,x<sub>i+1</sub>延遲,與a相乘再加c得到z,返回步驟二。本發明顯著降低了計算量,可滿足各種需要實時生成均勻分布隨機數發生器的場合。
文檔編號H04Q7/34GK101127575SQ200710154108
公開日2008年2月20日 申請日期2007年9月12日 優先權日2007年9月12日
發明者丁杰偉, 浩 李 申請人:中興通訊股份有限公司