專利名稱:一種隨機數(shù)生成方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域的測試技術(shù),特別是涉及一種隨機數(shù)生成方法和裝置。
背景技術(shù):
在現(xiàn)在的通信測試中,為了得到優(yōu)良的測試效果,盡可能的揭露測試對象中隱藏的錯誤,測試過程中需要使用盡可能多的測試用例。由于窮舉測試在實際中是不可能的,測試用例的分布情況直接影響測試中能夠發(fā)現(xiàn)的問題,也決定了最終的測試效果。為了獲得足夠多的測試用例,通信測試需要大量的輸入變量樣本。其中,數(shù)值型輸入變量樣本通常來自隨機數(shù)發(fā)生器。該隨機數(shù)發(fā)生器根據(jù)預(yù)先設(shè)定的輸入樣本的取值范圍和精度要求,產(chǎn)生在該取值范圍內(nèi)的隨機數(shù)作為該輸入變量的樣本。
現(xiàn)有技術(shù)的平方取中法隨機數(shù)生成器,通過運算模塊將一個給定的n位的數(shù)進行平方,然后高位補0得到2n位數(shù),再截取中間n位進行下次迭代,最后得到一個隨機數(shù)序列。此平方取中法隨機數(shù)生成器產(chǎn)生的隨機數(shù)周期短,容易出現(xiàn)隨機數(shù)為同一常數(shù)或者零退化現(xiàn)象,覆蓋范圍狹窄,均勻性和穩(wěn)定性差。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明所要解決的技術(shù)問題是提供一種隨機數(shù)生成方法和隨機數(shù)生成器,使隨機數(shù)具有優(yōu)良均勻性和穩(wěn)定性的。為了解決上述問題,本發(fā)明公開了一種隨機數(shù)生成方法,其步驟包括步驟101、計算隨機種子的平方數(shù),并將平方后得到的數(shù)高位補零得到2n位平方數(shù)K2n ;其中,n為輸出隨機數(shù)的最大位數(shù),n為偶數(shù);步驟102、將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n, m)=0, m ^ n ;步驟103、從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出;以及步驟104,當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)均不為零時,將其作為新隨機種子;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)中存在至少一個為零時,在未被步驟103選中的n/m個m位數(shù)中,找出非零的m位數(shù),替換新隨機數(shù)中為零的最高位和/或最低位m位數(shù),得到新隨機種子。其中,所述隨機數(shù)的最大位數(shù)n,由隨機數(shù)的取值范圍和精度要求確定。其中,還包括將所述新隨機數(shù)On放縮至符合隨機數(shù)的取值范圍和精度要求后輸出。其中,從所述2n/m個m位數(shù)中選擇n/m個進行組合時,選擇正中間的n/m個進行組合。
其中,從所述2n/m個m位數(shù)中選擇n/m個進行組合時,選擇奇數(shù)項的n/m個進行組合。其中,所述的參數(shù)m使用事先預(yù)置的默認(rèn)值。其中,所述的參數(shù)m值根據(jù)所述的n值和2n位平方數(shù)K2n確定,具體過程包括根據(jù)所述n值確定m位數(shù)可能的個數(shù)i,記作1 , . . .11^,運算111111?!?(^2 ^+1得到參數(shù)1]1值。相應(yīng)的,本發(fā)明還公開了一種隨機數(shù)生成裝置,包括運算器,用于計算隨機種子的平方數(shù),并將平方后得到的數(shù)高位補零得到2n位平方數(shù)K2n ;其中,n為輸出隨機數(shù)的最大位數(shù),n為偶數(shù);分隔器,用于將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n,m) = 0,m 古 n ;
組合單元,用于從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出;以及隨機種子產(chǎn)生器,用于當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)均不為零時,將其作為新隨機種子;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)中存在至少一個為零時,在未被步驟103選中的n/m個m位數(shù)中,找出非零的m位數(shù),替換新隨機數(shù)中為零的最高位和/或最低位m位數(shù),得到新隨機種子。其中,所述的組合單元包括放縮單元,所述的放縮單元用于將所述新隨機數(shù)On放縮至符合隨機數(shù)的取值范圍和精度要求后輸出。其中,還包括控制器,用于確定參數(shù)m值,具體確定過程包括根據(jù)所述n值確定m位數(shù)可能的個數(shù)i,記作Im1, . . . Ini,運算mm<xi(K2 ,i)+i。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點本發(fā)明通過特有隨機種子產(chǎn)生器,對迭代中使用的隨機種子高位和低位為0位進行限制,進行優(yōu)化操作,避免了現(xiàn)有技術(shù)的短周期,容易出現(xiàn)隨機數(shù)為同一常數(shù)或零退化等現(xiàn)象,達到提高隨機數(shù)的均勻性和穩(wěn)定性的目的。
圖I是本發(fā)明的一種隨機數(shù)生成方法的一次工作流程圖;圖2是本發(fā)明優(yōu)選的一種隨機數(shù)生成方法的流程圖;圖3是隨機數(shù)位數(shù)n = 6,初始隨機種子Mtl = 2時,采用的平方取中法和本發(fā)明中的方法得到的隨機數(shù)序列;圖4是隨機數(shù)位數(shù)n = 4,初始隨機種子Mci = 9999時,采用的平方取中法和本發(fā)明中的方法得到的隨機數(shù)序列;圖5是本發(fā)明的一種隨機數(shù)生成裝置結(jié)構(gòu)圖;圖6是本發(fā)明優(yōu)選的一種隨機數(shù)生成裝置的結(jié)構(gòu)圖。
具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步詳細(xì)的說明。參照圖1,示出了本發(fā)明的一種隨機數(shù)生成方法的流程圖。
步驟101,計算隨機種子的平方數(shù),并將平方后得到的數(shù)高位補零得到2n位平方數(shù)K2n ;其中,n為輸出隨機數(shù)的最大位數(shù),n為偶數(shù)。此步驟中最開始計算獲取的隨機種子,比如Mtl = 350,n = 4時,那么平方后的數(shù)為122500,此時在122500前補零得到8位的數(shù)00122500。然后計算由后續(xù)步驟生成的新隨機種子。步驟102,將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n, m)=0, m 古 n ;在實際中,一般將所述2n位的平方值按照從高位到低位的順序分隔成2n/m(mod(n, m) = 0, m 古 n)個 m 位數(shù),記作=X1, X2, , X2n/m。 此步驟中,將步驟101得到的2n位的平方數(shù)K2n按組進行分割,分組的要求為當(dāng)mod(n, m) = 0, m古n時,求2n/m。那么K2n就可以按順序分為2n/m個數(shù),每個數(shù)為m位。例如將上述8位數(shù)00122500分為4個2位數(shù),分隔后為00,12,25,00四個2位數(shù)。優(yōu)選的,參數(shù)m可以使用事先預(yù)置的默認(rèn)值,比如n/2 ;優(yōu)選的,參數(shù)m也可以根據(jù)所述n值和所述2n位的平方值K2n產(chǎn)生,比如根據(jù)所述n值確定可能的m值的個數(shù)i,則所有可能的m值記作1 ,. . . ,Hii,運算mm<xi(K2 ,i)+i得到參數(shù)m的值。步驟103,從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出;在實際中,可以根據(jù)預(yù)先確定的方法選擇X1, X2, ...,X2n7m中的n/m個作為On,如選擇中間的 n/m 個,即 On = I On^mX [n/2m]+1+1 On^2mX [n/2m] +2+. . . +X
[n/2m]+n/m
;選擇奇數(shù)n/m個,即On
=KTmX^KT2mX3+... +Xwirt。。但在選擇中,需要注意盡量不要使用處于K2n最低位的X2n7m作為下一次迭代的隨機種子Sn的最低位。以及步驟104,當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)均不為零時,將其作為新隨機種子;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)中存在至少一個為零時,在未被步驟103選中的n/m個m位數(shù)中,找出非零的m位數(shù),替換新隨機數(shù)中為零的最高位和/或最低位m位數(shù),得到新隨機種子。在此步驟中,可以包括步驟Al,比較On中最高位和最低位使用的m位數(shù)是否為0 ;步驟A2,若都不為0,則令Sn = On,將Sn作為新隨機種子轉(zhuǎn)入步驟101 ;步驟A3,若其中至少有I個為0,則在未被組合器選擇的n/m個m位數(shù)中,找出非0的m位數(shù),記作Xhl,Xh2, .. . Xhj (hj < . . . <h2 < hi),順序替換On中為0最低位和最高位m位數(shù),至On中最低位和最高位m位數(shù)均不為0或Xhl, Xh2,. . . Xhj全部完成替換后,令Sn=On,將Sn作為新隨機種子轉(zhuǎn)入步驟101。參照圖2,本發(fā)明的優(yōu)選一種隨機數(shù)生成方法的流程圖。步驟100,獲取初始隨機種子,輸出隨機數(shù)的最大位數(shù)n,n為偶數(shù),其中初始隨機種子不等于10n,N > O。此步驟中的初始隨機種子Mtl, M0^ 10N (N彡0),然后由此初始隨機種子開始產(chǎn)生新隨機數(shù)和新隨機種子。即此步驟中隨機數(shù)Mtl不能為10,100等數(shù)。因為一旦輸入此類數(shù)字,那么最后輸出結(jié)果不能滿足隨機數(shù)的廣范圍,長周期,均勻和穩(wěn)定的要求。在此步驟中,還可以獲取輸出隨機數(shù)的取值范圍和精度要求,以此來限定輸出的隨機數(shù)。對于在輸入中沒有給出輸出隨機數(shù)序列的位數(shù)n的情況,可以根據(jù)輸入的精度要求和取值范圍來確定n值。例如要求輸出的取值范圍為(0,1)的8位小數(shù),n可以選擇不小于8的偶數(shù),對于n = 8的情況,輸出的On經(jīng)放縮單元縮小IO8倍得到取值范圍內(nèi)符合精度要求的隨機數(shù)。步驟101,步驟102,步驟103和步驟104如上所述,在此不加詳述。步驟105,將所述新隨機數(shù)On放縮至符 合隨機數(shù)的取值范圍和精度要求后輸出。根據(jù)輸入的精度要求和取值范圍,將新隨機數(shù)On放縮到適合范圍內(nèi)再輸出,例如要求輸出的取值范圍為(0,1)的8位小數(shù),輸出的On經(jīng)放縮單元縮小IO8倍得到取值范圍內(nèi)符合精度要求的隨機數(shù)。參照圖3,圖4和圖5,通過示出本發(fā)明一種隨機數(shù)生成方法對比于原平方取中法仿真模擬的實施結(jié)果,具體說明本發(fā)明對提高隨機數(shù)均勻性和穩(wěn)定性的作用。參照圖3,當(dāng)初始隨機種子很小的時候,平方取中法輸出的隨機數(shù)序列會很快變成
同一常數(shù)。取n = 6,初始隨機種子Mtl = 2為例,為了說明本發(fā)明使用的靈活性,我們對于m=3和m = 2兩種情況分別進行說明。m = 3時,On取中間兩個3位數(shù)作為輸出;m = 2時,On取奇數(shù)序號的3個2位數(shù)作為輸出。對于平方取中法,在隨機種子很小的情況下,會因為平方后中間n位變成零,而導(dǎo)致隨機數(shù)序列一直為零。而本發(fā)明中隨機數(shù)生成方法,會在隨機種子平方后結(jié)果中,通過步驟101至104尋找非零部分作為下一次迭代的隨機種子,而不是局限于取中間n位作為下一次的隨機種子,在這種情況下,避免了零退化,隨機數(shù)序列會很快趨于穩(wěn)定。參照圖4,當(dāng)運算過程中,平方取中后的隨機種子等于F*10n/2(F>0)時,平方取中法在迭代后,會導(dǎo)致隨機數(shù)序列在一個小范圍內(nèi)循環(huán)重復(fù)。發(fā)生這種情況的主要原因,是限于平方取中法的規(guī)則,在出現(xiàn)上述隨機種子時,會一直使用F2的后n/2位數(shù)擴大IOn72倍作為輸出和下一次迭代的隨機種子,這樣的情況下,會限制輸出的序列的取值范圍,影響其隨機性。另外,通過仿真計算可知,對于任意m位數(shù)平方后,取該m位數(shù)的尾數(shù)繼續(xù)進行平方迭代,所得到的輸出結(jié)果在迭代若干次后,會在一個范圍內(nèi)循環(huán),通常,循環(huán)的長度隨m的增加而增加。而通過本發(fā)明的一種隨機數(shù)生成方法,在出現(xiàn)輸出為F*10m的情況時,會通過步驟101至步驟104修正下一次迭代的隨機種子,即尋找非0的m位數(shù)XhnXh2,. . . Xhj,代替輸出中為0的最低m位數(shù),即使用F*10m+Xhl做下一次迭代的隨機種子,這樣就避免了平方取中法中,輸出的隨機數(shù)序列會在小范圍內(nèi)循環(huán)。在圖4中可以看出,隨機數(shù)序列很快趨于穩(wěn)定和均勻。本發(fā)明還提供了一種隨機數(shù)生成裝置。參照圖5,本發(fā)明的一種隨機數(shù)生成裝置包括
運算器,用于計算隨機種子的平方數(shù),并將平方后得到的數(shù)高位補零得到2n位平方數(shù)K2n ;其中,n為輸出隨機數(shù)的最大位數(shù),n為偶數(shù);分隔器,用于將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n,m) = 0,m 古 n ;組合單元,用于從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出;以及隨機種子產(chǎn)生器,用于當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)均不為零時,將其作為新隨機種子;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)中存在至少一個為零時,在未被步驟103選中的n/m個m位數(shù)中,找出非零的m位數(shù),替換新隨機數(shù)中為零的最高位和/或最 低位m位數(shù),得到新隨機種子。參照圖6,示出了本發(fā)明優(yōu)選的一種隨機數(shù)生成裝置。輸入端口 用于初始隨機種子Mtl, M0幸10N(N彡0)和輸出隨機數(shù)的最大位數(shù)n (n為偶數(shù))。還可以用于輸入隨機數(shù)取值范圍、精度要求。寄存器用于保存運算過程中的隨機種子。運算器用于計算所述隨機種子的平方K,并將所得平方值高位補零成2n位數(shù),記作=K2n0分隔器用于將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n,m) =0, m^n0在實際中用于將所述2n位的平方值按照從高位到低位的順序分隔成2n/m(mod(n, m) = 0, m 古 n)個 m 位數(shù),記作=X1, X2, , X2n7m ;組合單元,包括組合器,放縮單元和輸出端口。用于從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出。其中,組合器用于從X1, X2, ...,X2n7ffl中選擇n/m個進行組合生成另一個新的n位隨機數(shù)on,并將所述On發(fā)送放縮單元;放縮單元用于根據(jù)隨機數(shù)的取值范圍和精度要求將組合器產(chǎn)生的新的n位隨機數(shù)On放縮到取值范圍;輸出端口用于輸出隨機數(shù)序列。隨機種子產(chǎn)生器用于生成新隨機種子,并輸入到寄存器。還包括控制器,用于由所述隨機數(shù)發(fā)生裝置根據(jù)所述n值和所述2n位的平方值K2n產(chǎn)生參數(shù)m值,例如在隨機數(shù)發(fā)生裝置中增加一個控制器,連接分隔器,根據(jù)分隔器提供的n值確定可能的m值的個數(shù)i,將所有可能的m值記作1 , . . . , Hii,根據(jù)i和K2n計算mmod(K2n ’i)+l輸出到分隔器。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于系統(tǒng)實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上對本發(fā)明所提供的一種隨機數(shù)生成方法和裝置進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種隨機數(shù)生成方法,其特征在于 步驟101、計算隨機種子的平方數(shù),并將平方后得到的數(shù)高位補零得到2n位平方數(shù)K2n;其中,n為輸出隨機數(shù)的最大位數(shù),n為偶數(shù); 步驟102、將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n, m) = 0,m古n ; 步驟103、從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出; 以及步驟104, 當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)均不為零時,將其作為新隨機種子;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)中存在至少一個為零時,在未被步驟103選中的n/m個m位數(shù)中,找出非零的m位數(shù),替換新隨機數(shù)中為零的最高位和/或最低位m位數(shù),得到新隨機種子。
2.如權(quán)利要求I所述的隨機數(shù)生成方法,其特征在于 還包括步驟100,獲取初始隨機種子,輸出隨機數(shù)的最大位數(shù)n,n為偶數(shù),其中初始隨機種子不等于10n,N≤O。
3.如權(quán)利要求I所述的隨機數(shù)生成方法,其特征在于 所述隨機數(shù)的最大位數(shù)n,由隨機數(shù)的取值范圍和精度要求確定。
4.如權(quán)利要求I所述的隨機數(shù)生成方法,其特征在于 將所述新隨機數(shù)On放縮至符合隨機數(shù)的取值范圍和精度要求后輸出。
5.如權(quán)利要求I所述的隨機數(shù)生成方法,其特征在于 從所述2n/m個m位數(shù)中選擇n/m個進行組合時,選擇正中間的n/m個進行組合,或者選擇奇數(shù)項的n/m個進行組合。
6.如權(quán)利要求I所述的隨機數(shù)生成方法,其特征在于 所述的參數(shù)m使用事先預(yù)置的默認(rèn)值。
7.如權(quán)利要求I所述的隨機數(shù)生成方法,其特征在于 所述的參數(shù)m值根據(jù)所述的n值和2n位平方數(shù)K2n確定,具體過程包括根據(jù)所述n值確定m位數(shù)可能的個數(shù)i,記作1 , . . .Iiii,運算mm<xi(ic2 ,i)+i得到參數(shù)m值。
8.一種隨機數(shù)生成裝置,其特征在于 運算器,用于計算隨機種子的平方數(shù),并將平方后得到的數(shù)高位補零得到2n位平方數(shù)K2n ;其中,n為輸出隨機數(shù)的最大位數(shù),n為偶數(shù); 分隔器,用于將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n, m)=0,m 古 n ; 組合單元,用于從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出; 以及隨機種子產(chǎn)生器,用于當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)均不為零時,將其作為新隨機種子;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)中存在至少一個為零時,在未被步驟103選中的n/m個m位數(shù)中,找出非零的m位數(shù),替換新隨機數(shù)中為零的最高位和/或最低位m位數(shù),得到新隨機種子。
9.如權(quán)利要求8所述的隨機數(shù)生成裝置,其特征在于所述的組合單元包括放縮單元,所述的放縮單元用于將所述新隨機數(shù)On放縮至符合隨機數(shù)的取值范圍和精度要求后輸出。
10.如權(quán)利要求8所述的隨機數(shù)生成裝置,其特征在于 還包括控制器,用于確定參數(shù)m值,具體確定過程包括根據(jù)所述n值確定m位數(shù)可能的個數(shù) i,記作1 ,…IHi,運算mm<xl(K2 ,i)+l。
全文摘要
本發(fā)明提供了一種隨機數(shù)生成方法和裝置,涉及通信領(lǐng)域的測試技術(shù)。所述隨機數(shù)生成方法包括計算隨機種子的平方數(shù),并將平方后得到的數(shù)高位補零得到2n位平方數(shù)K2n,n為最大輸出隨機數(shù)位數(shù),n為偶數(shù);將所述2n位平方數(shù)K2n按順序分割成2n/m個m位數(shù);其中,mod(n,m)=0,m≠n;從所述2n/m個m位數(shù)中選擇n/m個進行組合生成一個n位新隨機數(shù)On并輸出;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)均不為零時,將其作為新隨機種子;當(dāng)新隨機數(shù)On中最高位和最低位使用的m位數(shù)中存在至少一個為零時,在未被選中的n/m個m位數(shù)中,找出非零的m位數(shù),替換新隨機數(shù)中為零的最高位和/或最低位m位數(shù),得到新隨機種子。本發(fā)明通過優(yōu)化隨機種子提高了隨機數(shù)的均勻性和穩(wěn)定性。
文檔編號G06F7/58GK102799413SQ201110136989
公開日2012年11月28日 申請日期2011年5月25日 優(yōu)先權(quán)日2011年5月25日
發(fā)明者李云洲, 丁國鵬, 張艷, 趙熠飛, 肖立民, 許希斌 申請人:清華大學(xué)