專利名稱:一種偽隨機數(shù)生成器及偽隨機數(shù)生成方法
技術領域:
本發(fā)明涉及數(shù)據(jù)信號生成技術領域,尤其涉及一種偽隨機數(shù)生成器及偽隨機數(shù)生成方法。
背景技術:
偽隨機數(shù)在計算機軟件、硬件、安全等領域有著廣泛的應用,因而產(chǎn)生高效優(yōu)質 (即隨機性高)的偽隨機數(shù)變得非常重要。當前產(chǎn)生偽隨機數(shù)的方案是通過模指數(shù)定義的偽隨機數(shù)發(fā)生器產(chǎn)生。在偽隨機數(shù)生成過程中,需要一直對數(shù)據(jù)求η次方,并按順序保存數(shù)據(jù)。利用該現(xiàn)有方法產(chǎn)生的數(shù)據(jù),其長度可長可短,但容易出現(xiàn)循等破壞偽隨機數(shù)質量的數(shù)據(jù)??傮w而言,現(xiàn)有的偽隨機數(shù)生成方案所產(chǎn)生的偽隨機數(shù),占用空間大,效率低,并且所產(chǎn)生數(shù)據(jù)的隨機性也不夠高,不能滿足當前實際應用中對隨機性越來越高的要求。
因此,如何高效地生成高質量的偽隨機數(shù)成為當前需要解決的一個問題。發(fā)明內(nèi)容
本發(fā)明所要解決的技術問題在于,提供一種偽隨機數(shù)生成器及偽隨機數(shù)生成方法,用于克服當前偽隨機數(shù)生成效率低且質量較差的缺陷,解決如何實現(xiàn)高效地生成高質量偽隨機數(shù)的技術問題。
為了解決上述問題,本發(fā)明提出了一種偽隨機數(shù)生成器,包括
奇偶判斷模塊,用于判斷當前偽隨機數(shù)%是奇數(shù)還是偶數(shù),若為偶數(shù),則將當前偽隨機數(shù)送入平方處理模塊,若為奇數(shù),則將當前偽隨機數(shù)送入雙曲處理模塊;
所述平方處理模塊,用于對當前偽隨機數(shù)%按照平方算法生成下一偽隨機數(shù)ai+l ‘
所述雙曲處理模塊,用于對當前偽隨機數(shù) 按照雙曲算法生成下一偽隨機數(shù) +1。
其中,所述平方處理模塊,在 是偶數(shù)時,進行平方處理時,令= S(Bi)來獲得新的偽隨機數(shù)^V1 ;其中,函數(shù)S(X) = X2HlOd P ;P是一個素數(shù)。
其中,所述雙曲處理模塊,在 是奇數(shù)時,進行雙曲處理時,令^v1 = τ (Bi)來獲得新的偽隨機數(shù)^v1 ;其中,函數(shù)T(X) = (x-x-^mod P ;ρ是一個素數(shù)。
本發(fā)明還提供一種偽隨機數(shù)生成器,包括
參數(shù)輸入模塊,用于配置初始參數(shù)及初始偽隨機數(shù);
奇偶判斷模塊,用于判斷當前偽隨機數(shù)%是奇數(shù)還是偶數(shù),若為偶數(shù),則將當前偽隨機數(shù)送入平方處理模塊,若為奇數(shù),則將當前偽隨機數(shù)送入雙曲處理模塊;
所述平方處理模塊,用于對當前偽隨機數(shù)%按照平方算法生成下一偽隨機數(shù)ai+1 輸出至計數(shù)判斷模塊;
所述雙曲處理模塊,用于對當前偽隨機數(shù) 按照雙曲算法生成下一偽隨機數(shù) +1 輸出至計數(shù)判斷模塊;
所述計數(shù)判斷模塊,用于接收下一偽隨機數(shù) +1,對計數(shù)值i進行加1遞增令i =i+Ι,將利用平方處理或雙曲處理后所得的偽隨機數(shù)^V1作為當前偽隨機數(shù)%,判斷當前計數(shù)值i是否大于預設計數(shù)門限L,若遞增后的計數(shù)值大于預設計數(shù)門限,即i > L,則跳轉至溢出處理模塊進行處理,否則,將當前偽隨機數(shù)%發(fā)送給輸出模塊;
溢出處理模塊,用于在i > L時,對偽隨機數(shù)叫進行溢出處理,令 =(Bi-BiJmod P,將%作為偽隨機數(shù)輸出至輸出模塊;
所述輸出模塊,一方面用于對外輸出新生成的偽隨機數(shù)^,另一方面將新生成的偽隨機數(shù)%及當前計數(shù)值i反饋至奇偶判斷模塊,用于繼續(xù)生成下一個偽隨機數(shù)。
其中,所述參數(shù)輸入模塊配置初始參數(shù)的包括一個大素數(shù)P,一個用于限制初始 a0的長度的整數(shù)N ;—個整數(shù)L,用于作為對計數(shù)值i進行大小判斷的門限值;所述初始偽隨機數(shù)徹是一個非平凡(nommiform)大數(shù),即計數(shù)值i = 0。
其中,所述平方處理模塊,在 是偶數(shù)時,進行平方處理時,令^v1 = S(Bi);其中, 函數(shù)S(X) = χ2 mod ρ ;ρ是一個素數(shù)。
其中,所述雙曲處理模塊,在 是奇數(shù)時,進行雙曲處理時,令ai+1 = T (a,);其中, 函數(shù) T(X) = (x-x—Omod ρ ;p 是一個素數(shù)。
本發(fā)明還提供一種偽隨機數(shù)的生成方法,包括
首先,確定初始參數(shù)及初始偽隨機數(shù);
然后,判斷當前偽隨機數(shù)%是奇數(shù)還是偶數(shù)若是偶數(shù),則對當前偽隨機數(shù)%按照平方算法生成下一偽隨機數(shù)^V1 ;若是奇數(shù),則對當前偽隨機數(shù)%按照雙曲算法生成下一偽隨機數(shù)^V1 ;
之后,令i = i+Ι,將利用平方處理或雙曲處理后所得的偽隨機數(shù)ai+1作為當前偽隨機數(shù)% ;判斷計數(shù)值i遞增后是否大于設定的計數(shù)門限L
若i > L,則令a, = (Bi-BiJmod ρ, ρ是一個素數(shù),將Bi作為偽隨機數(shù)輸出;否則直接輸出利用平方處理或雙曲處理后新生成的偽隨機數(shù)%;
最后,一方面對外輸出新生成的偽隨機數(shù) ,另一方面將新生成的偽隨機數(shù) 及當前計數(shù)值i反饋至對當前偽隨機數(shù)%進行奇偶判斷的步驟,繼續(xù)執(zhí)行利用平方處理或雙曲處理生成偽隨機數(shù)的流程。
其中,若判斷當前偽隨機數(shù)%是偶數(shù),則對當前偽隨機數(shù)%按照平方算法生成下一偽隨機數(shù),生成方式為
令 ει +1 = S(Bi);其中,S(x) = χ2 mod ρ。
其中,若判斷當前偽隨機數(shù)%是奇數(shù),則對當前偽隨機數(shù)%按照雙曲算法生成下一偽隨機數(shù),生成方式為
令屮+1= T(Bi);其中,T(x) = (X-X-1)mod ρ。
本發(fā)明的偽隨機數(shù)生成器及偽隨機數(shù)生成方法,采用創(chuàng)新設計的雙曲平方算法, 該雙曲平方算法占用空間少,執(zhí)行速度快,可以高效產(chǎn)生偽隨機數(shù),生成速度更快,更能滿足實用要求。并且,應用本發(fā)明所產(chǎn)生的偽隨機數(shù)隨機性更好,可滿足當前對隨機數(shù)隨機性越來越高的要求。
圖1是偽隨機數(shù)生成器的結構框圖2是偽隨機數(shù)生成方法的流程圖3是另一種結構簡化的偽隨機數(shù)生成器的結構框圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,以下結合附圖對本發(fā)明作進一步地詳細說明。
本發(fā)明基于對有限域領域深入的研究,提出了一種偽隨機數(shù)生成器及偽隨機數(shù)生成方法,生成偽隨機數(shù)時采用雙曲平方算法,能夠高效地產(chǎn)生優(yōu)質的偽隨機數(shù),可解決現(xiàn)有方法存在的生成偽隨機數(shù)效率低且其隨機性質量差的問題。測試表明,該創(chuàng)新設計的生成優(yōu)質偽隨機數(shù)的雙曲平方算法,可以高效產(chǎn)生優(yōu)質的偽隨機數(shù)。
雙曲平方算法的核心部分可以分解為兩個子算法
(1)平方算法:S(x) = χ2 mod ρ
(2)雙曲算法:T(x) = (x-x^)mod ρ
其中,Mod是求余數(shù)運算,ρ為任意大素數(shù)。
χ-1 定義為xXx-1 = 1 mod ρ
如圖1所示,給出了本發(fā)明的一種用于生成偽隨機數(shù)的偽隨機數(shù)生成器的結構框圖。所述偽隨機數(shù)生成器利用雙曲平方算法來生成偽隨機數(shù),該偽隨機數(shù)生成器包括
參數(shù)輸入模塊,用于配置初始參數(shù)及初始偽隨機數(shù);所述初始參數(shù)包括一個大素數(shù)P,用于取余計算;一個整數(shù)N,用于限制初始的長度,a0的長度應小于或等于N位; 一個整數(shù)L,用于作為對計數(shù)值i進行大小判斷的門限值。令初始偽隨機數(shù)為一個非平凡(nonuniform)大數(shù);令計數(shù)值i = 0。
奇偶判斷模塊,用于判斷當前偽隨機數(shù)%是奇數(shù)還是偶數(shù),若為偶數(shù),則將當前偽隨機數(shù)送入平方處理模塊,若為奇數(shù),則將當前偽隨機數(shù)送入雙曲處理模塊;
所述平方處理模塊,用于對當前偽隨機數(shù)%按照平方算法生成下一個偽隨機數(shù) ^V1輸出至計數(shù)判斷模塊;其中,若 是偶數(shù),進行平方處理時,令^V1 = Sbi) ; S (χ) =X2 mod ρ ;
所述雙曲處理模塊,用于對當前偽隨機數(shù) 按照雙曲算法生成下一個偽隨機數(shù) ^v1輸出至計數(shù)判斷模塊;其中,若 是奇數(shù),進行雙曲處理時,令iiw = T(ai) ;T (χ)= (χ-χ Omod ρ ;
所述計數(shù)判斷模塊,用于接收下一偽隨機數(shù) +1,對計數(shù)值i進行加1遞增,令i = i+Ι (在i遞增后,此時的偽隨機數(shù)%就是遞增前的ai+1),判斷當前計數(shù)值i是否大于預設計數(shù)門限L,若遞增后的計數(shù)值大于預設計數(shù)門限L,即i > L,則跳轉至溢出處理模塊進行處理,否則,直接輸出利用平方處理或雙曲處理后所得的偽隨機數(shù)%至輸出模塊輸出所產(chǎn)生的偽隨機數(shù)。
所述溢出處理模塊,用于在i > L時,對偽隨機數(shù)%進行溢出處理,令 = (Bi-BiJmod p,將 作為偽隨機數(shù)輸出至輸出模塊。
所述輸出模塊,一方面用于對外輸出偽隨機數(shù),同時也將新生成的偽隨機數(shù)%及當前計數(shù)值i反饋至奇偶判斷模塊,作為奇偶判斷模塊的輸入?yún)?shù)繼續(xù)生成下一個偽隨機數(shù)。最終隨著計數(shù)值i的遞增而輸出偽隨機數(shù)序列%, ,....,%,.....。
本發(fā)明的偽隨機數(shù)生成方法,其具體流程如圖2所示。
首先,確定初始參數(shù)及初始偽隨機數(shù)%。
所述初始參數(shù)包括一個大素數(shù)P,用于取余計算;一個整數(shù)N,用于限制初始%的長度,a0的長度應小于或等于N位;一個整數(shù)L,用于作為對計數(shù)值i進行大小判斷的門限值,當i小于或等于L時可直接采用平方雙曲方法獲得的偽隨機數(shù),當i大于L時,則需做溢出處理。令初始偽隨機數(shù)徹為一個非平凡(norumiform)大數(shù);令計數(shù)值i = 0。
然后,判斷當前的偽隨機數(shù)%是奇數(shù)還是偶數(shù)
若屮是偶數(shù),則進行平方處理,令^v1 = S ( );其中,S(X) =X2 mod ρ;
若 是奇數(shù),則進行雙曲處理,令ai+1 = T(Bi);其中,T(x) = (x-xlmod ρ ;
之后,令i = i+1 ;判斷計數(shù)值i遞增后是否大于L 在i遞增后,此時的偽隨機數(shù) 就是遞增前的采用平方處理或雙曲處理所生成的偽隨機數(shù)叫+1。若i > L,則令 = (Bi-BiJmod ,將 作為偽隨機數(shù)輸出;否則直接輸出利用平方處理或雙曲處理后所得的偽隨機數(shù)%。
最后,一方面將新生成的偽隨機數(shù)%輸出,另一方面將所得偽隨機數(shù)%及新的計數(shù)值i反饋至奇偶判斷的步驟,對^進行就判斷后繼續(xù)利用平方處理或雙曲處理生成偽隨機數(shù),如此循環(huán),最終生成偽隨機數(shù)序列%, ,....,%,……,獲得高質量的偽隨機數(shù)。
如圖3所示,進一步給出了另一種偽隨機數(shù)生成器的簡化結構框圖,所述偽隨機數(shù)生成器包括
奇偶判斷模塊,用于判斷當前偽隨機數(shù)%是奇數(shù)還是偶數(shù),若為偶數(shù),則將當前偽隨機數(shù)送入平方處理模塊,若為奇數(shù),則將當前偽隨機數(shù)送入雙曲處理模塊;
所述平方處理模塊,用于對當前偽隨機數(shù) 按照平方算法生成下一偽隨機數(shù); 所述平方處理模塊在叫是偶數(shù)時,進行平方處理時,令^v1 = S( );其中,函數(shù)S(X) =X2 mod ρ ;ρ是一個素數(shù)。
所述雙曲處理模塊,用于對當前偽隨機數(shù) 按照雙曲算法生成下一偽隨機數(shù) +1。 所述雙曲處理模塊,在 是奇數(shù)時,進行雙曲處理時,令^V1 = Tbi);其中,函數(shù)T(X)= (X-X-1) mod P ;P 是一個素數(shù)。
中國《隨機數(shù)檢測規(guī)范》是中國國內(nèi)權威的檢測規(guī)范,包含單比特頻數(shù)檢測、塊內(nèi)頻數(shù)檢測、撲克檢測、疊子序列檢測、游程總數(shù)檢測、游程分布檢測、塊內(nèi)最大“1”檢測,二元推導檢測、自相關檢測、矩陣秩檢測、累加和檢測、近似熵檢測、線形復雜度檢測、通用統(tǒng)計檢測、離散傅里葉檢測等15項檢測內(nèi)容。
根據(jù)中國《隨機數(shù)檢測規(guī)范》對現(xiàn)有方法和應用本發(fā)明的雙曲平方算法產(chǎn)生的偽隨機數(shù)進行全面檢測,檢測結果如表1所示
表1 偽隨機數(shù)檢測結果
檢測指標現(xiàn)有方法雙曲平方算法生成等量偽隨機數(shù)平均耗時比例4. 361生成偽隨機數(shù)的平均質量0. 9810. 988
根據(jù)上述表1所示的檢測結果可知,相對于現(xiàn)有算法,雙曲平方算法在生成偽隨機數(shù)時的速度更快,所產(chǎn)生的偽隨機數(shù)的隨機性更好,具有高效生成高質量偽隨機數(shù)的特點ο
以上所述僅為本發(fā)明的實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、 等同替換、改進等,均應包含在本發(fā)明的權利要求范圍之內(nèi)。
權利要求
1.一種偽隨機數(shù)生成器,包括奇偶判斷模塊,用于判斷當前偽隨機數(shù)%是奇數(shù)還是偶數(shù),若為偶數(shù),則將當前偽隨機數(shù)送入平方處理模塊,若為奇數(shù),則將當前偽隨機數(shù)送入雙曲處理模塊;所述平方處理模塊,用于對當前偽隨機數(shù)%按照平方算法生成下一偽隨機數(shù)^V1 ; 所述雙曲處理模塊,用于對當前偽隨機數(shù)%按照雙曲算法生成下一偽隨機數(shù)%+1。
2.如權利要求1所述的偽隨機數(shù)生成器,其特征在于,所述平方處理模塊,在 是偶數(shù)時,進行平方處理時,令^V1 = S(Bi)來獲得新的偽隨機數(shù)^V1 ;其中,函數(shù)S(X) =x2 mod ρ ;p是一個素數(shù)。
3.如權利要求1或2所述的偽隨機數(shù)生成器,其特征在于,所述雙曲處理模塊,在 是奇數(shù)時,進行雙曲處理時,令^V1 = T(Bi)來獲得新的偽隨機數(shù)屮+1 ;其中,函數(shù)T(X) = (x-x-Omod ρ ;ρ是一個素數(shù)。
4.一種偽隨機數(shù)生成器,包括參數(shù)輸入模塊,用于配置初始參數(shù)及初始偽隨機數(shù);奇偶判斷模塊,用于判斷當前偽隨機數(shù)%是奇數(shù)還是偶數(shù),若為偶數(shù),則將當前偽隨機數(shù)送入平方處理模塊,若為奇數(shù),則將當前偽隨機數(shù)送入雙曲處理模塊;所述平方處理模塊,用于對當前偽隨機數(shù)%按照平方算法生成下一偽隨機數(shù)^v1輸出至計數(shù)判斷模塊;所述雙曲處理模塊,用于對當前偽隨機數(shù)%按照雙曲算法生成下一偽隨機數(shù)^v1輸出至計數(shù)判斷模塊;所述計數(shù)判斷模塊,用于接收下一偽隨機數(shù) +1,對計數(shù)值i進行加1遞增令i = i+1, 將利用平方處理或雙曲處理后所得的偽隨機數(shù)^V1作為當前偽隨機數(shù)%,判斷當前計數(shù)值 i是否大于預設計數(shù)門限L,若遞增后的計數(shù)值大于預設計數(shù)門限,即i > L,則跳轉至溢出處理模塊進行處理,否則,將當前偽隨機數(shù)%發(fā)送給輸出模塊;溢出處理模塊,用于在i > L時,對偽隨機數(shù) 進行溢出處理,令 =(Bi-BiJmod p, 將%作為偽隨機數(shù)輸出至輸出模塊;所述輸出模塊,一方面用于對外輸出新生成的偽隨機數(shù)%,另一方面將新生成的偽隨機數(shù)%及當前計數(shù)值i反饋至奇偶判斷模塊,用于繼續(xù)生成下一個偽隨機數(shù)。
5.如權利要求4所述的偽隨機數(shù)生成器,其特征在于,所述參數(shù)輸入模塊配置初始參數(shù)的包括一個大素數(shù)P,一個用于限制初始的長度的整數(shù)N ; —個整數(shù)L,用于作為對計數(shù)值i進行大小判斷的門限值; 所述初始偽隨機數(shù)是一個非平凡大數(shù),即計數(shù)值i = O。
6.如權利要求4或5所述的偽隨機數(shù)生成器,其特征在于,所述平方處理模塊,在 是偶數(shù)時,進行平方處理時,令^V1 = S(Bi);其中,函數(shù)S(X) =X2 mod P ;P是一個素數(shù)。
7.如權利要求4或5所述的偽隨機數(shù)生成器,其特征在于,所述雙曲處理模塊,在 是奇數(shù)時,進行雙曲處理時,令^V1 = T (Bi);其中,函數(shù)T (χ) =(x-x_1)mod P ;P 是一個素數(shù)。
8.一種偽隨機數(shù)的生成方法,其特征在于,包括 首先,確定初始參數(shù)及初始偽隨機數(shù);然后,判斷當前偽隨機數(shù)^是奇數(shù)還是偶數(shù)若是偶數(shù),則對當前偽隨機數(shù)^按照平方算法生成下一偽隨機數(shù)^V1 ;若是奇數(shù),則對當前偽隨機數(shù)^按照雙曲算法生成下一偽隨機數(shù) ai+1 ;之后,令i = i+Ι,將利用平方處理或雙曲處理后所得的偽隨機數(shù)^V1作為當前偽隨機數(shù)% ;判斷計數(shù)值i遞增后是否大于設定的計數(shù)門限L 若i > L,則令 =(Bi-BiJmod ρ,ρ是一個素數(shù),將 作為偽隨機數(shù)輸出;否則直接輸出利用平方處理或雙曲處理后新生成的偽隨機數(shù) ;最后,一方面對外輸出新生成的偽隨機數(shù)%,另一方面將新生成的偽隨機數(shù)%及當前計數(shù)值i反饋至對當前偽隨機數(shù)%進行奇偶判斷的步驟,繼續(xù)執(zhí)行利用平方處理或雙曲處理生成偽隨機數(shù)的流程。
9.如權利要求8所述的偽隨機數(shù)的生成方法,其特征在于,若判斷當前偽隨機數(shù)%是偶數(shù),則對當前偽隨機數(shù)%按照平方算法生成下一偽隨機數(shù) ai+1, 生成方式為令 ai+1 = S(Sii);其中,S(x) = χ2 mod ρ。
10.如權利要求8或9所述的偽隨機數(shù)的生成方法,其特征在于,若判斷當前偽隨機數(shù)%是奇數(shù),則對當前偽隨機數(shù)%按照雙曲算法生成下一偽隨機數(shù) ai+1, 生成方式為令屮+1 = T(Bi);其中,T(X) = (X-X—Omod P。
全文摘要
本發(fā)明公開了一種偽隨機數(shù)生成器及偽隨機數(shù)的生成方法,根據(jù)雙曲平方算法高效地生成高質量的偽隨機數(shù),所述偽隨機數(shù)生成器包括奇偶判斷模塊,用于判斷當前偽隨機數(shù)ai是奇數(shù)還是偶數(shù),若為偶數(shù),則將當前偽隨機數(shù)送入平方處理模塊,若為奇數(shù),則將當前偽隨機數(shù)送入雙曲處理模塊;所述平方處理模塊,用于對當前偽隨機數(shù)ai按照平方算法生成下一偽隨機數(shù)ai+1;所述雙曲處理模塊,用于對當前偽隨機數(shù)ai按照雙曲算法生成下一偽隨機數(shù)ai+1。進一步在偽隨機數(shù)個數(shù)溢出時還可進行溢出處理。雙曲平方算法占用空間少,執(zhí)行速度快,應用本發(fā)明所產(chǎn)生的偽隨機數(shù)隨機性更好,可滿足當前對隨機數(shù)隨機性越來越高的要求。
文檔編號G06F7/58GK102520908SQ20111042880
公開日2012年6月27日 申請日期2011年12月20日 優(yōu)先權日2011年12月20日
發(fā)明者周端陽, 喻賢成, 寧振虎, 李曉龍, 王博, 金銀軍 申請人:大唐微電子技術有限公司