專利名稱:隨機(jī)數(shù)產(chǎn)生裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)隨機(jī)數(shù)產(chǎn)生裝置及其方法。
背景技術(shù):
隨機(jī)數(shù)被用于各種應(yīng)用領(lǐng)域。例如計(jì)算機(jī)模擬,取樣,數(shù)值解 析,編程,決策,加密,美術(shù),娛樂(lè)等。為此,學(xué)者們提出了很多隨 機(jī)數(shù)產(chǎn)生法。隨著計(jì)算機(jī)的高速化,使得其所需要的隨機(jī)數(shù)也大為增 加,進(jìn)而要求隨機(jī)數(shù)產(chǎn)生器能對(duì)應(yīng)此需要。
而在另一方面,能以簡(jiǎn)單的結(jié)構(gòu)來(lái)產(chǎn)生具有復(fù)雜的變化的數(shù)列的
混沌隨機(jī)數(shù)產(chǎn)生方法被人們所期待。自Von Neumann等提出用式1來(lái) 產(chǎn)生隨機(jī)數(shù)以來(lái),很多學(xué)者發(fā)表了用式1來(lái)產(chǎn)生隨機(jī)數(shù)的研究報(bào)告。 式(l)
(0<jc, <1, f = 0,1,2")
非專禾U文獻(xiàn)1: Ulam,S.M. and Von Neumann, J., "On Combination of Stocastic Determistic Processes", Bull. AMS., Vol. 53, p.ll20(1947)在此 文獻(xiàn)中,提出了用式(l)來(lái)產(chǎn)生隨機(jī)數(shù)。
非專利文獻(xiàn)2:香田徹 柿本厚志,'^擬似亂數(shù)i力才義,,,情 報(bào)処理學(xué)會(huì)論文誌A, Vol. 27No. 3pp. 289 — 296 (1 9 8 6 )。此文獻(xiàn)中,作者指出將閾值取為0.5時(shí),用式(l)產(chǎn)生的 隨機(jī)數(shù)具有高的質(zhì)量,但其計(jì)算式(l)一次只輸出1比特的隨機(jī)數(shù)。所 以有著隨機(jī)數(shù)的產(chǎn)生速度慢的缺點(diǎn)。
非專利文獻(xiàn)3: Phatak, S. C. and Rao, S. S., "logistic map: A Possible Random-number generator", Phys. Rev. E, Vol. 51 No. 4, pp. 3670-3678(1995).此文獻(xiàn)顯示了對(duì)用式(l)產(chǎn)生的數(shù)列能用變換式來(lái)將 具有U字形分布的Xt的系列變換成均等分布的數(shù)列。但是,變換后的 數(shù)列的前后數(shù)值存在著很強(qiáng)的相關(guān)。而用間隔取值的方法可以使數(shù)列存在的相關(guān)減弱。但要想能通過(guò)統(tǒng)計(jì)檢驗(yàn)的話,移動(dòng)間隔數(shù)需要取較 大的值。
非專利文獻(xiàn)4:莊野克房,"力才7 二 > - 二 7 U >夕'",、〉工7° y ^力'一7 二 7 ,一y東京,東京,2 o 0 2。此文獻(xiàn)中指出對(duì)式(l)
用固定小數(shù)點(diǎn)計(jì)算方法做成硬件回路來(lái)實(shí)現(xiàn)高速產(chǎn)生隨機(jī)數(shù)的方法是 有效的。
專利文獻(xiàn)5:特開(kāi)2 0 0 5 — 2 2 8 1 6 9此文獻(xiàn)提出用固定小數(shù) 點(diǎn)計(jì)算方法,擴(kuò)展計(jì)算精度來(lái)計(jì)算式(l)。
以上的具有代表性的文獻(xiàn)所顯示的至今為止的利用式(l)來(lái)產(chǎn)生隨 機(jī)數(shù)的方法所存在的問(wèn)題是所產(chǎn)生出來(lái)的隨機(jī)數(shù)不能將周期性(周期 長(zhǎng)),品質(zhì)(統(tǒng)計(jì)學(xué)上的亂雜性),產(chǎn)生速度等同時(shí)達(dá)到在實(shí)際應(yīng)用領(lǐng)域 中能夠滿足的水平。
發(fā)明內(nèi)容
本發(fā)明的目的是要提供一種在通用計(jì)算器(機(jī))及專用硬件回路的 兩方面都能實(shí)現(xiàn),用上述計(jì)算式(l)來(lái)產(chǎn)生,隨機(jī)數(shù)的產(chǎn)生速度,周期 長(zhǎng),隨機(jī)數(shù)的品質(zhì)都達(dá)到實(shí)用上的高水準(zhǔn)的隨機(jī)數(shù)生成裝置和方法。
本發(fā)明是這樣實(shí)現(xiàn)的 一種隨機(jī)數(shù)產(chǎn)生裝置,包括如下內(nèi)容-將N(N是2以上的整數(shù))比特的2進(jìn)整數(shù)作為初始值接受的初始值 輸入單元;
將以上N比特的2進(jìn)數(shù)列變換成[((N-l)/m)]+l位的m比特的整數(shù) (m是l以上的整數(shù)[]是舍去小數(shù)點(diǎn)以下的部分的計(jì)算沐準(zhǔn)備對(duì)函數(shù)式 (l)進(jìn)行用整數(shù)的計(jì)算來(lái)實(shí)行固定小數(shù)點(diǎn)計(jì)算的初始值變換單元;
用于保存上述初始值變換所輸出的數(shù)據(jù)及保存計(jì)算精度N比特的 混沌計(jì)算器(反復(fù)計(jì)算)的計(jì)算所需要的輸入數(shù)據(jù)的暫存器;
以上述暫存器內(nèi)儲(chǔ)存的[((N-l)/m)]+l位m比特的整數(shù)作為輸入值 來(lái)對(duì)函數(shù)式(l)進(jìn)行整數(shù)(分割)運(yùn)算,且具有2N比特的計(jì)算結(jié)果的混沌 計(jì)算器;
將上述混沌計(jì)算器所具有的2N比特的計(jì)算結(jié)果中的前N比特作為函數(shù)式(l)的反復(fù)計(jì)算所需要的輸入值而儲(chǔ)存于暫存器,并且在2N 比特的計(jì)算結(jié)果的特定的比特之間進(jìn)行1對(duì)1的排他邏輯和運(yùn)算,并 將其N比特的結(jié)果作為隨機(jī)數(shù)輸出的抽出攪拌單元;
用來(lái)儲(chǔ)存上述抽出攪拌單元所輸出的N比特的隨機(jī)數(shù)的隨機(jī)數(shù)暫 存器;
用來(lái)控制上述初始值輸入的初始值變換單元,混沌計(jì)算器,抽出 攪拌單元等來(lái)進(jìn)行隨機(jī)數(shù)產(chǎn)生的隨機(jī)數(shù)產(chǎn)生控制單元;
作為上述混沌計(jì)算器的輸入值a (aoa卜.a^)的計(jì)算結(jié)果的2N比 特的d的各比特(dod卜.d2^)在混沌計(jì)算器的計(jì)算過(guò)程中所受的輸入 a的影響的比特?cái)?shù)各不相同,具有不均勻的分布特性,上述抽出攪拌單 元所進(jìn)行的在(dod卜.d2^)的特定的比特間所進(jìn)行的1對(duì)1的排他邏 輯和(XOR)運(yùn)算的攪拌手法是以所產(chǎn)生的隨機(jī)數(shù)rj (i-O,l,...,N-l) 在此運(yùn)算下成為其每一比特都能以不同形式受到輸入值a的所有比特 的影響,上述(dod!…d2N.!)之中的di和di+N (i-0,l…N-l)之間的1 對(duì)1的排他邏輯和運(yùn)算(r產(chǎn)di④d,)的攪拌手法為特征的隨機(jī)數(shù)產(chǎn)生裝 置。
一種隨機(jī)數(shù)產(chǎn)生方法,是依照函數(shù)式xt+產(chǎn)4xt(l-xt沐產(chǎn)生隨機(jī)數(shù), 其包括如下步驟-
將輸入的N(N是2以上的整數(shù))比特的2進(jìn)整數(shù)作為初始值接受;
將以上N比特的2進(jìn)數(shù)列變換成[((N-l)/m)]+l位的m比特的整數(shù) (m是l以上的整數(shù)[]是舍去小數(shù)點(diǎn)以下的部分的計(jì)算);
輸入到具有N比特的計(jì)算精度和2N比特的計(jì)算結(jié)果的混沌計(jì)算
器;
用上述混沌計(jì)算器對(duì)輸入值a(aoa卜.a^)用函數(shù)式(l)進(jìn)行用整數(shù) 運(yùn)算來(lái)實(shí)行的固定小數(shù)點(diǎn)計(jì)算,產(chǎn)生2N比特的2進(jìn)數(shù)列d(dod卜.d2^); 上述混沌計(jì)算器的計(jì)算是由具有2m比特的計(jì)算能力(這里所說(shuō)的
計(jì)算能力是指有整數(shù)的乘,力n,比特移位,比特間邏輯運(yùn)算的能力)
的計(jì)算器來(lái)將N比特的整數(shù)分割成[((N-l)/m)]+l位的m比特的整數(shù) 來(lái)對(duì)函數(shù)式(l)進(jìn)行整數(shù)(分割)運(yùn)算 ,
6將上述混沌計(jì)算器的2N比特的計(jì)算結(jié)果d(do山...d,)中的前N比 特作為函數(shù)式(l)的反復(fù)計(jì)算所需要的輸入值a(aoa,.. .a^);
對(duì)上述混沌計(jì)算器的輸入值a (aoa卜.a^)的計(jì)算結(jié)果的,在混沌 計(jì)算器的計(jì)算過(guò)程中所受的輸入a的影響的比特?cái)?shù)各不相同的,具有 不均勻的分布特性的,2N比特的d的各比特(dQd卜.d2^)的特定的 比特之間進(jìn)行1對(duì)1的排他邏輯和運(yùn)算來(lái)產(chǎn)生N比特的隨機(jī)數(shù) r(ror卜.rN.,);
上述在(dod卜.cb^)的特定的比特間所進(jìn)行的1對(duì)1的排他邏輯 和(XOR)運(yùn)算的攪拌手法是以所產(chǎn)生的隨機(jī)數(shù)ri (i-O,l,...N-l)在此 運(yùn)算下成為其每一比特都能以不同形式受到輸入值a的所有比特的影 響,上述(dod卜.d編)之中的di和di+N (i-0,l…N-l)之間的1對(duì)1 的排他邏輯和運(yùn)算(r產(chǎn)di④di+w)的攪拌方法為特征的隨機(jī)數(shù)產(chǎn)生方法。
本發(fā)明用固定小數(shù)點(diǎn)計(jì)算式(l),使其比浮動(dòng)小數(shù)點(diǎn)來(lái)計(jì)算更為合 理和快速。
本發(fā)明在用固定小數(shù)點(diǎn)計(jì)算法計(jì)算式(l)時(shí),用針對(duì)計(jì)算系統(tǒng)的計(jì) 算能力,進(jìn)行了最佳分割計(jì)算的混沌計(jì)算器來(lái)進(jìn)行整數(shù)運(yùn)算。使得在 計(jì)算式(l)時(shí)的計(jì)算精度能容易地?cái)U(kuò)展,從而實(shí)現(xiàn)了產(chǎn)生的具有混沌動(dòng) 態(tài)的數(shù)值系列具有更長(zhǎng)的周期。
作為本發(fā)明的特征的攪拌手法使每計(jì)算式(l)一次,即可產(chǎn)生與計(jì) 算精度同樣多的比特的2進(jìn)隨機(jī)數(shù)。并將原來(lái)的具有U字形分布的混 沌系列數(shù)值變換成均勻分布的2進(jìn)隨機(jī)數(shù)。
本發(fā)明利用簡(jiǎn)單的處理,實(shí)現(xiàn)了能適應(yīng)于各種不同規(guī)模的計(jì)算系 統(tǒng),能容易地?cái)U(kuò)展計(jì)算精度的,能高速產(chǎn)生具有長(zhǎng)周期,高質(zhì)量的統(tǒng) 計(jì)學(xué)性能的隨機(jī)數(shù)的隨機(jī)數(shù)產(chǎn)生裝置。這種以簡(jiǎn)單的處理來(lái)實(shí)現(xiàn)目的 的形式,在確保隨機(jī)數(shù)生成器的性能之上,并能實(shí)現(xiàn)低價(jià)格,是一種 被期待的產(chǎn)業(yè)技術(shù)。
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
圖1為有關(guān)本發(fā)明的一個(gè)實(shí)施形態(tài)的隨機(jī)數(shù)產(chǎn)生裝置的構(gòu)成圖
7圖2為m-32時(shí)的計(jì)算精度與式(l)的計(jì)算速度的關(guān)系表
圖3為將N比特的整數(shù)的乘算(c-ab)展開(kāi)成2進(jìn)數(shù)時(shí)的計(jì)算式
圖4為dl和r的軌跡的比較圖
圖5為dl的前8比特值的分布圖.
圖6為r的前8比特值的分布圖
圖7為r和dl的對(duì)應(yīng)關(guān)系圖
圖8為隨機(jī)數(shù)產(chǎn)生裝置100的動(dòng)作的實(shí)施例的流程圖
圖9為隨機(jī)數(shù)的equidistribution檢定的結(jié)果
圖10為隨機(jī)數(shù)的serial檢定的結(jié)果
圖11為隨機(jī)數(shù)的poker檢定的結(jié)果
圖12為隨機(jī)數(shù)的coupon collector's檢定的結(jié)果
圖13為隨機(jī)數(shù)的run檢定的結(jié)果
圖14為隨機(jī)數(shù)的birthday spacings檢定的結(jié)果
圖15為隨機(jī)數(shù)的serial correlation檢定的結(jié)果
圖16為m=32時(shí)的計(jì)算精度和隨機(jī)數(shù)產(chǎn)生速度的關(guān)系表
圖中IOO隨機(jī)數(shù)產(chǎn)生裝置,102初始值輸入單元,104初始值變 換單元,106儲(chǔ)存器,108混沌計(jì)算器,110數(shù)值抽出攪拌處理單元, 112隨機(jī)數(shù)儲(chǔ)存器,114隨機(jī)數(shù)產(chǎn)生控制單元。
具體實(shí)施例方式
以下我們邊參照?qǐng)D式邊說(shuō)明本發(fā)明的實(shí)施形態(tài)和效果。我們來(lái)說(shuō) 明本發(fā)明是,在計(jì)算式(l)時(shí)采用了最有效的計(jì)算方法,并使用了最有 效的攪拌方法的,隨機(jī)數(shù)產(chǎn)生裝置和方法。
圖1是本發(fā)明的一個(gè)實(shí)施形態(tài)的隨機(jī)數(shù)產(chǎn)生裝置100的構(gòu)成圖。 本實(shí)施形態(tài)的隨機(jī)數(shù)產(chǎn)生裝置100是對(duì)N比特的2進(jìn)數(shù)列,用具有 2m(m是1以上的整數(shù))比特的計(jì)算能力的混沌計(jì)算器來(lái)進(jìn)行反復(fù)計(jì)算, 并對(duì)每次計(jì)算所產(chǎn)生的混沌計(jì)算器的2N比特的結(jié)果的前N比特和后N 比特間進(jìn)行比特間的排他邏輯和運(yùn)算。由此來(lái)高速地產(chǎn)生長(zhǎng)周期的, 優(yōu)質(zhì)的2進(jìn)隨機(jī)數(shù)數(shù)列。隨機(jī)數(shù)產(chǎn)生裝置100具備初始值輸入單元102,初始值變換單元104,儲(chǔ)存器106,混沌計(jì)算器108,數(shù)據(jù)抽出攪拌單 元110,隨機(jī)數(shù)儲(chǔ)存器112,隨機(jī)數(shù)產(chǎn)生控制單元114等。
初始值輸入單元102將輸入的N比特的2進(jìn)數(shù)列作為進(jìn)行固定小 數(shù)點(diǎn)計(jì)算的初始值的小數(shù)點(diǎn)以下的部分接收。我們通過(guò)將式(l)的計(jì)算 用固定小數(shù)點(diǎn)計(jì)算法來(lái)實(shí)現(xiàn),使得計(jì)算器的比特寬(精度)的利用效率比 浮動(dòng)小數(shù)點(diǎn)計(jì)算法更高。通常高精度的科學(xué)計(jì)算是使用浮動(dòng)小數(shù)點(diǎn)計(jì) 算法。但是用浮動(dòng)小數(shù)點(diǎn)倍精度(符號(hào)1比特,指數(shù)11比特,數(shù)值部 52比特)來(lái)計(jì)算式(l)時(shí),我們可以觀察到其所使用的指數(shù)部不超過(guò)6 比特。很明顯不管是在硬件還是在軟件上計(jì)算,用固定小數(shù)點(diǎn)計(jì)算法 來(lái)計(jì)算計(jì)算式(l)更為合理和有效。
初始值變換單元104將N比特的2進(jìn)數(shù)列變換成[((N-l)/m)]+l位 的m比特的整數(shù),為實(shí)行對(duì)式(l)進(jìn)行用整數(shù)的運(yùn)算來(lái)實(shí)現(xiàn)的固定小數(shù) 點(diǎn)計(jì)算作準(zhǔn)備。由于用整數(shù)的運(yùn)算來(lái)實(shí)現(xiàn)式(l)的計(jì)算時(shí)的固定小數(shù)點(diǎn) 計(jì)算,使得計(jì)算速度更快計(jì)算精度的擴(kuò)展也更容易。在2進(jìn)制計(jì)算機(jī) 上對(duì)式(l)進(jìn)行計(jì)算精度N比特的固定小數(shù)點(diǎn)計(jì)算時(shí),xt的數(shù)值在離散 區(qū)間(1/2"-1/2、中變化。因此在能計(jì)算2m(比如64)比特的整數(shù)的計(jì)算 系統(tǒng)上,能容易地進(jìn)行計(jì)算精度m(比如32)比特以下的,對(duì)式(1)的, 用整數(shù)的計(jì)算。由于整數(shù)的乘算,加算等的計(jì)算,能容易地用分割計(jì) 算來(lái)進(jìn)行精度擴(kuò)展,因此對(duì)式(l)用整數(shù)來(lái)實(shí)行的固定小數(shù)點(diǎn)計(jì)算,能 容易地?cái)U(kuò)展其計(jì)算精度。
儲(chǔ)存器106用來(lái)儲(chǔ)存為混沌計(jì)算器(反復(fù))計(jì)算的[((N-l)/m)]+l位的 m比特的整數(shù)輸入值。
但是如圖2所示擴(kuò)展了計(jì)算精度會(huì)使式(l)的計(jì)算速度急劇低下。 因此有必要做到計(jì)算一次式(l)而產(chǎn)生更多的比特的隨機(jī)數(shù)。而在另一 方面我們知道對(duì)一定長(zhǎng)的2進(jìn)數(shù)列進(jìn)行重復(fù)的比特運(yùn)算(移動(dòng),置換, 邏輯運(yùn)算)來(lái)獲得比較復(fù)雜的數(shù)列的方法。但是存在著重復(fù)運(yùn)算的次數(shù) 越多能夠得到看上去越亂的數(shù)列,同時(shí)需要的時(shí)間則更長(zhǎng)的問(wèn)題。
混沌計(jì)算器108將儲(chǔ)存在儲(chǔ)存器106的[((N-l)/m)]+l位的m比特 的整數(shù)作為輸入值,對(duì)式(l)用整數(shù)運(yùn)算進(jìn)行計(jì)算。由于[((N-l)/m)]+l 位的m比特的整數(shù)演算的原理與在小學(xué)所學(xué)的多位數(shù)IO進(jìn)數(shù)的運(yùn)算相
9同,在此省略其說(shuō)明。
數(shù)值抽出攪拌單元110將混沌計(jì)算器108的2N比特的計(jì)算結(jié)果(d) 的前N比特(dl)作為(反復(fù))計(jì)算式(l)的輸入值存入儲(chǔ)存器106,又將比 特di和dw(i-O,l...N-l)之間的排他邏和運(yùn)算的N比特的結(jié)果作為隨機(jī) 數(shù)r( ron..n懶出。本發(fā)明所提案的攪拌方法對(duì)有著顯著不均勻分布 的2N比特的數(shù)列(d),只進(jìn)行上述特定的比特間的一對(duì)一的排他邏輯 和運(yùn)算,即能產(chǎn)生出均勻分布的與計(jì)算精度等長(zhǎng)的隨機(jī)數(shù)列。
將用整數(shù)對(duì)式(l)的計(jì)算,展開(kāi)成2進(jìn)數(shù)的計(jì)算,對(duì)其進(jìn)行觀察, 就能導(dǎo)出作為本發(fā)明的特征的攪拌方法。N比特的小數(shù)Xt的小數(shù)點(diǎn)以 下的部分作為N比特的整數(shù)a(aoa卜.^.0,則x產(chǎn)O.a;將l-Xt的小數(shù)點(diǎn) 以下的部分作為N比特的整數(shù)b(bob卜.b^),則l-x產(chǎn)O.b。也就是整數(shù) a和b之間是互補(bǔ)的關(guān)系。在這里使c=ab, d=4c(c,d為2N比特的整數(shù)) 則d=4ab成為式(l)的整數(shù)運(yùn)算的形式。在這里d(dod卜.d2^)的前N比 特為xw的小數(shù)點(diǎn)以下的部分。
在這里將d的前N比特作為N比特的整數(shù)dl , d的后N比特作為 N比特的整數(shù)d2,則xt+尸0.d。將整數(shù)a,b,c,d展開(kāi)成2迸數(shù),且其各比 特為(aoa….aN.0, (bob卜.bN》,(Cod…C2^) (dod,…d2N.,)時(shí),我們來(lái)考察 c=ab, d=4c的計(jì)算過(guò)程和其結(jié)果。由于d=4c的整數(shù)4的乘算是由向左 移位2比特即可完成,在這里我們先考察c=ab (2個(gè)N比特的2進(jìn)整 數(shù)a和b)的乘算過(guò)程和其結(jié)果。
如圖3所示,將c-ab的運(yùn)算展開(kāi)為2進(jìn)數(shù),我們可以知道c的各 比特Ci與a,b的各比特之間存在著可用式2來(lái)表現(xiàn)的關(guān)系。
式2
0 + 、 (/ = 0)
戶i
.乂a
(kci是從cw的進(jìn)位,i-2N+l時(shí),kc尸O) 在這里將Ci用輸入a的各比特的函數(shù)來(lái)表示,可得到式3
10式3
7;() (/=。)
c, =' 乂 (a。 ,..., a,—) = 乂 (a。 ~ a") (1S / S AT -1)
乂(a腫…,a,^)-y;K一, a,一w) (W化2iV-l)
在這里Ci所含有的輸入a的各比特的個(gè)數(shù)作為該比特所持有的復(fù) 雜度并以Sei表示,則c的各比特的復(fù)雜度如式4所示。 式4
—JV (0S"iV-l) 、一"[2iV-/ (A^"2iV-l)
由于d-4c則d的各比特如式5所示。在這里向左移位時(shí),最左位
置的比特進(jìn)入最右位置。
式5
^ =卜 (0化2iV-3)
根據(jù)以上的考察,很明顯,以產(chǎn)生的2進(jìn)數(shù)列的各比特,都具有 最大的復(fù)雜度為目標(biāo)的,本發(fā)明所提案的攪拌方法,即由式(6)所產(chǎn)生 的2進(jìn)數(shù)列r的各比特所具有的復(fù)雜度&均為N(計(jì)算精度的比特?cái)?shù))
式6
=(4④^)(4』)
(0為排他邏輯和(XOR)) 對(duì)式6作為攪拌手法的效果,用圖4, 5, 6, 7來(lái)說(shuō)明。 圖4是對(duì)式(l),用固定小數(shù)點(diǎn)128比特計(jì)算精度來(lái)計(jì)算時(shí)的dl和 r的軌跡圖。(將整數(shù)dl和r作為固定小數(shù)點(diǎn)計(jì)算的小數(shù)點(diǎn)以下的部分 來(lái)變換成O-l之間的數(shù)值)。dl的軌道是依照式(l)的,具有混沌動(dòng)態(tài)的 軌跡。dl的數(shù)值在靠近O的時(shí)候,顯示出單調(diào)增加的規(guī)則。而從r的 軌跡中卻找不到這樣的規(guī)則。dl和r之間也看不出有其他規(guī)則或關(guān)聯(lián)。 圖5顯示的是dl的前8比特的數(shù)值的頻度分布。圖6是r的前8 比特的數(shù)值的頻度分布。數(shù)值樣本數(shù)都是65536個(gè)。dl的分布近似于 U字形狀,而r的分布則近似于均勻分布。對(duì)r所進(jìn)行的統(tǒng)計(jì)學(xué)的檢定 的結(jié)果,稍后作說(shuō)明。
ii由于輸出的N比特的隨機(jī)數(shù)r是由計(jì)算式(6)來(lái)產(chǎn)生,所以有可能 在r和dl之間存在著某種相關(guān)關(guān)系。如果r和dl之間存在著線性相關(guān) 關(guān)系,則由r能推測(cè)出dl,這也就是從某個(gè)r的2進(jìn)數(shù)列可以推測(cè)出 其他的r的2進(jìn)數(shù)列。因此在這里對(duì)r和dl的對(duì)應(yīng)關(guān)系,在bitmap圖 上進(jìn)行確認(rèn)。由于無(wú)法用高的計(jì)算精度(如128比特)來(lái)計(jì)算,表示r和 dl的對(duì)應(yīng)關(guān)系,在這里我們對(duì)計(jì)算精度16比特時(shí)的r和dl的對(duì)應(yīng)關(guān) 系進(jìn)行觀察。圖7是取r為橫軸,dl為縱軸,計(jì)算精度16比特時(shí)的所 有可能產(chǎn)生的,r值和dl值之間的對(duì)應(yīng)關(guān)系圖。由于式(l)具有對(duì)稱性, 我們?nèi)≥斎胫礱從1到32767的32767個(gè)值進(jìn)行了計(jì)算。其結(jié)果得到 的dl的值為28671個(gè),r的值為32767個(gè)。從圖7,我們可以看到對(duì)于 輸入值a的從1到32767的值所計(jì)算出的dl值的分布是不均勻的,而 對(duì)應(yīng)于不均勻的dl的分布,r的分布在1到65535之間均勻地被分散 了。也就是由式(6)的攪拌,將分布不均勻的dl變換成了均勻分布的隨 機(jī)數(shù)r。而且r和dl之間不存在線性的相關(guān)關(guān)系。從以上的結(jié)果我們 可以確認(rèn)到,對(duì)于由式(l)所計(jì)算出來(lái)的,具有不均勻分布特性的,Xt(dl) 的數(shù)列,用式(6)對(duì)其進(jìn)行攪拌,可以得到均勻分布的隨機(jī)數(shù)r。
從以上對(duì)式(6)的攪拌手法的效果的考察,可以看出本發(fā)明所提案 的f拌手法是有效的。
隨機(jī)數(shù)儲(chǔ)存器112將抽出攪拌單元產(chǎn)生的N比特的隨機(jī)數(shù)儲(chǔ)存其中。
隨機(jī)數(shù)產(chǎn)生控制單元114控制各動(dòng)作單元的動(dòng)作及其反復(fù)操作來(lái) 產(chǎn)生隨機(jī)數(shù)。
圖8是隨機(jī)數(shù)產(chǎn)生裝置100的動(dòng)作的流程圖的例。以隨機(jī)數(shù)產(chǎn)生 指今作為本流程所示的隨機(jī)數(shù)產(chǎn)生裝置100的動(dòng)作的開(kāi)始。
將輸入到初始值輸入單元102的N比特的2進(jìn)數(shù)列作為初始值接 收(sl02)。然后初始值變換單元104將接收到的N比特的2進(jìn)數(shù)列變換 成[((N-l)/m)]+l位的2m進(jìn)數(shù)的整數(shù)(s104),并儲(chǔ)存在儲(chǔ)存器106中 (sl06)。之后,混沌計(jì)算器108將儲(chǔ)存在儲(chǔ)存器106的整數(shù)作為輸入值, 進(jìn)行式(l)的計(jì)算(s108)。接著,抽出攪拌單元將2N比特的計(jì)算結(jié)果, 整數(shù)(d)的前N比特的整數(shù)(dl)存入儲(chǔ)存器106;并將前N比特的整數(shù)(dl)與后N比特的整數(shù)(d2)間進(jìn)行比特間的排他邏輯和運(yùn)算(sll0)。接下來(lái), 將N比特隨機(jī)數(shù)r儲(chǔ)存于隨機(jī)數(shù)儲(chǔ)存器112中(sl12)。本流程圖所示的 隨機(jī)數(shù)產(chǎn)生裝置100的動(dòng)作終了。
要連續(xù)產(chǎn)生隨機(jī)數(shù)時(shí),將上述(sl08)到(sll2)的流程反復(fù)執(zhí)行即可。
我們對(duì)用上述隨機(jī)數(shù)產(chǎn)生裝置在計(jì)算精度N=128比特時(shí)產(chǎn)生的隨 機(jī)數(shù)進(jìn)行了 7項(xiàng)目的統(tǒng)計(jì)學(xué)檢定。由于本發(fā)明所提案的隨機(jī)數(shù)產(chǎn)生器 所輸出的隨機(jī)數(shù)是2進(jìn)數(shù)列,我們采用了f檢定手法。?分布是在樣 本數(shù)足夠大時(shí)才有效的近似值。但是考慮到樣本數(shù)較大時(shí)有可能掩蓋 了存在于數(shù)列局部的規(guī)則性,我們做了多種數(shù)量的樣本的Z檢定。
上述統(tǒng)計(jì)學(xué)的檢定是將每次計(jì)算所產(chǎn)生的128比特的隨機(jī)數(shù)r連在 一起所進(jìn)行的,因此有可能將存在于每次計(jì)算之間的,也就是每128 比特之間可能存在的規(guī)則掩蓋掉。在此我們將同樣的檢定,對(duì)每計(jì)算 一次式(l),只取一個(gè)樣本的數(shù)據(jù)采集方法,也實(shí)行了Z檢定。
72檢定包括Equidistribution檢定,Serial檢定,Poker檢定,Coupon collector's檢定,Run檢定,Birthday spacings檢定等6個(gè)項(xiàng)目。所有的 項(xiàng)目的檢定各做了 1000次。對(duì)所取得的1000個(gè)的/值,分類成P〈P/c), 5%, 25%, 50%, 75%, 95%, 99°/。的7個(gè)區(qū)間,來(lái)與理論值進(jìn)行比較。 再加上serial correlation檢定,共計(jì)做了 7項(xiàng)目的檢定。serial correlation 檢定是對(duì)進(jìn)入95%信賴區(qū)間的檢定結(jié)果進(jìn)行計(jì)數(shù)。
對(duì)將128比特的r連在一起的檢定,所取得樣本數(shù)為nl,n2,n3,n4 時(shí)的結(jié)果,及將128比特的r的最前面的數(shù)比特作為一個(gè)樣本時(shí)的樣本 數(shù)為nAl,nA2,nA3,nA4時(shí)的結(jié)果,如圖9至圖15所示。圖9是從隨機(jī) 數(shù)列取出8比特的整數(shù)樣本所做的Equidistribution檢定的結(jié)果。樣本 數(shù)為 nl(nAl)=216 , n2(nA2)=216*10 , n3(nA3)=216*100 , n4(nA4)=216*1000,的4種,顯示出良好的結(jié)果。圖10是對(duì)所產(chǎn)生的8 比特的整數(shù)樣本進(jìn)行Serial檢定的結(jié)果。樣本數(shù)分別為nl(nAl)=22Q, n2(nA2)=22()*10, n3(nA3)=22()*100, n4(nA4)=22()*1000,也顯示出良好 的結(jié)果。圖11從隨機(jī)數(shù)列取出了3比特的整數(shù)樣本,進(jìn)行5分類,自 由度為4的Poker檢定的結(jié)果。樣本數(shù)為nl(nAl)=21Q,n2(nA2)=21Q*10, n3(nA3)-21()*100, n4(nA4)=21Q*1000,樣本數(shù)nl(nAl)時(shí)的;^值的進(jìn)入
131%區(qū)間的數(shù)量超過(guò)2%,但樣本數(shù)增加后的其他的3個(gè)檢定結(jié)果都顯示 出良好的結(jié)果。因此我們可以認(rèn)為這是由于樣本數(shù)過(guò)少而造成的結(jié)果。 圖12是自由度為30的Coupon collector's檢定的結(jié)果。樣本數(shù)為 nl(nAl)=210, n2(nA2)=210*10, n3(nA3)=210*100, n4(nA4)=210*1000, 也顯示出良好的結(jié)果。圖13是32比特的整數(shù)隨機(jī)數(shù)進(jìn)行的Up run檢 定的結(jié)果。樣本數(shù)為nl(nAl)=216, n2(nA2)=216*10, n3(nA3)=216*100, n4(nA4)=216*1000,也顯示出良好的結(jié)果。圖14是對(duì)25比特的整數(shù)數(shù) 列進(jìn)行的,參數(shù)r^225^29,自由度為3的,Birthday spacings檢定的結(jié) 果。取樣次數(shù)為nl(nAl)-103, n2(nA2)=104, n3(nA3)=105, n4(nA4)=106, 也顯示出良好的結(jié)果。圖15是對(duì)4比特的整數(shù)數(shù)列進(jìn)行的serial correlation檢定的結(jié)果。樣本數(shù)為nl(nAl)=21Q, n2(nA2)=21Q*10, n3(nA3)=21Q*100, n4(nA4)=21Q*1000,在95%的信賴區(qū)間,1000次的檢 定中相關(guān)系數(shù)c在/z-2ct2";U + 2ct之內(nèi)的數(shù)量,基本上都在950以上, 可以說(shuō)是良好的結(jié)果。以上嚴(yán)格的檢定的結(jié)果,都顯示出被檢定的數(shù) 列具有良好的統(tǒng)計(jì)學(xué)上的均勻分布的特性。有關(guān)以上的檢定方法的具 體內(nèi)容記載于文獻(xiàn)(DONALD E.Knuth, "The Art of Computer Programming, Vol.2, Seminumerical Algorithms Third Edition")
依照本發(fā)明,可以由非線性函數(shù)高速地產(chǎn)生出具有混沌變化的長(zhǎng) 周期,并能通過(guò)嚴(yán)格的統(tǒng)計(jì)學(xué)的檢定的隨機(jī)數(shù)。此隨機(jī)數(shù)能夠應(yīng)用于 各種領(lǐng)域計(jì)算機(jī)模擬,取樣,數(shù)值解析,編程,決策,加密,美術(shù), 娛樂(lè)等。
由于本發(fā)明在隨機(jī)數(shù)產(chǎn)生上,只用了整數(shù)運(yùn)算(加,乘,比特移位, 邏輯運(yùn)算等),又由于整數(shù)能容易地實(shí)行分割計(jì)算,因此即使是不同的 計(jì)算系統(tǒng)(通用計(jì)算機(jī)(各種OS),專用硬件回路,微型計(jì)算機(jī)),只要能 進(jìn)行最基本的整數(shù)運(yùn)算,即能做到由相同的輸入值得到相同的輸出值 (結(jié)果)。
本發(fā)明在計(jì)算精度N的比特時(shí),每計(jì)算式(l)一次,即可以最少的 攪拌數(shù)(一次),便可輸出N比特的具有最大復(fù)雜度(N)的隨機(jī)數(shù)。抑制 了由計(jì)算精度的擴(kuò)展而導(dǎo)致的隨機(jī)數(shù)產(chǎn)生速度的低下,實(shí)現(xiàn)了隨機(jī)數(shù) 的高速產(chǎn)生。計(jì)算精度與隨機(jī)數(shù)產(chǎn)生速度的關(guān)系如圖16所示,達(dá)到了實(shí)用上的,高水準(zhǔn)的數(shù)值。由于只用整數(shù)的加,乘,比特移位,邏輯 運(yùn)算等計(jì)算機(jī)最容易執(zhí)行的計(jì)算,所以能容易地做成集成電路,實(shí)現(xiàn) 更高的隨機(jī)數(shù)產(chǎn)生速度。
本發(fā)明與不能用于信息安全的,傳統(tǒng)的隨機(jī)數(shù)產(chǎn)生法不同。由于 利用了混沌函數(shù),并在產(chǎn)生隨機(jī)數(shù)時(shí)利用了具有一方向性的排他邏輯
和運(yùn)算,使得從所產(chǎn)生的一部分隨機(jī)數(shù)r,無(wú)法推測(cè)出xt,也無(wú)法推測(cè) 出其他的隨機(jī)數(shù)。
由此可見(jiàn),本發(fā)明的隨機(jī)數(shù)產(chǎn)生裝置,具有能適應(yīng)各種需求的各 種[性能與成本]的組合。具有好的擴(kuò)展性,能應(yīng)用于科研,及包含信息 安全領(lǐng)域在內(nèi)的,廣泛的產(chǎn)業(yè)領(lǐng)域中。
以上,用實(shí)施形態(tài)對(duì)本發(fā)明進(jìn)行了說(shuō)明,但本發(fā)明的技術(shù)手法并 不只限于上述實(shí)施形態(tài)所述的范圍,能夠?qū)ι鲜鰧?shí)施形態(tài)進(jìn)行變更或 改良。上述發(fā)明是對(duì)產(chǎn)生混沌的式(l),進(jìn)行每一次的計(jì)算,用最少的 攪拌次數(shù)(一次),來(lái)輸出最多的(N比特),具有最大復(fù)雜度(N)的攪拌手 法。但是,以隨機(jī)數(shù)的產(chǎn)生效率及品質(zhì)的低下為代價(jià),對(duì)上述實(shí)施形 態(tài)做變更也是可能的。很明顯,像這樣的變更改良后的形態(tài)也屬于本 發(fā)明的技術(shù)的范圍。
1權(quán)利要求
1、一種隨機(jī)數(shù)產(chǎn)生裝置,其特征在于,包括將N(N是2以上的整數(shù))比特的2進(jìn)整數(shù)作為初始值接受的初始值輸入單元;將以上N比特的2進(jìn)數(shù)列變換成[((N-1)/m)]+1位的m比特的整數(shù)(m是1以上的整數(shù)[]是舍去小數(shù)點(diǎn)以下的部分的計(jì)算)來(lái)準(zhǔn)備對(duì)函數(shù)式(1)進(jìn)行用整數(shù)的計(jì)算來(lái)實(shí)行固定小數(shù)點(diǎn)計(jì)算的初始值變換單元;用于保存上述初始值變換所輸出的數(shù)據(jù)及保存計(jì)算精度N比特的混沌計(jì)算器(反復(fù)計(jì)算)的計(jì)算所需要的輸入數(shù)據(jù)的暫存器;以上述暫存器內(nèi)儲(chǔ)存的[((N-1)/m)]+1位m比特的整數(shù)作為輸入值來(lái)對(duì)函數(shù)式(1)進(jìn)行整數(shù)(分割)運(yùn)算,且具有2N比特的計(jì)算結(jié)果的混沌計(jì)算器;將上述混沌計(jì)算器所具有的2N比特的計(jì)算結(jié)果中的前N比特作為函數(shù)式(1)的反復(fù)計(jì)算所需要的輸入值而儲(chǔ)存于暫存器,并且在2N比特的計(jì)算結(jié)果的特定的比特之間進(jìn)行1對(duì)1的排他邏輯和運(yùn)算,并將其N比特的結(jié)果作為隨機(jī)數(shù)輸出的抽出攪拌單元;用來(lái)儲(chǔ)存上述抽出攪拌單元所輸出的N比特的隨機(jī)數(shù)的隨機(jī)數(shù)暫存器;用來(lái)控制上述初始值輸入的初始值變換單元,混沌計(jì)算器,抽出攪拌單元等來(lái)進(jìn)行隨機(jī)數(shù)產(chǎn)生的隨機(jī)數(shù)產(chǎn)生控制單元;作為上述混沌計(jì)算器的輸入值a(a0a1...aN-1)的計(jì)算結(jié)果的2N比特的d的各比特(d0d1...d2N-1)在混沌計(jì)算器的計(jì)算過(guò)程中所受的輸入a的影響的比特?cái)?shù)各不相同,具有不均勻的分布特性,上述抽出攪拌單元所進(jìn)行的在(d0d1...d2N-1)的特定的比特間所進(jìn)行的1對(duì)1的排他邏輯和(XOR)運(yùn)算的攪拌手法是以所產(chǎn)生的隨機(jī)數(shù)ri(i=0,1,...,N-1)在此運(yùn)算下成為其每一比特都能以不同形式受到輸入值a的所有比特的影響,上述(d0d1...d2N-1)之中的di和di+N(i=0,1...N-1)之間的1對(duì)1的排他邏輯和運(yùn)算<maths id="math0001" num="0001" ><math><![CDATA[ <mrow><mo>(</mo><msub> <mi>r</mi> <mi>i</mi></msub><mo>=</mo><msub> <mi>d</mi> <mi>i</mi></msub><mo>⊕</mo><msub> <mi>d</mi> <mrow><mi>i</mi><mo>+</mo><mi>N</mi> </mrow></msub><mo>)</mo> </mrow>]]></math> id="icf0001" file="A2008800023480002C1.tif" wi="23" he="4" top= "248" left = "74" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/></maths>的攪拌手法為特征的隨機(jī)數(shù)產(chǎn)生裝置。
2、 一種隨機(jī)數(shù)產(chǎn)生方法,是依照函數(shù)式xt+產(chǎn)4xt(l-xt)來(lái)產(chǎn)生隨機(jī)數(shù),其特征在于,包括如下步驟將輸入的N(N是2以上的整數(shù))比特的2進(jìn)整數(shù)作為初始值接受; 將以上N比特的2進(jìn)數(shù)列變換成[((N-l)/m)]+l位的m比特的整數(shù) (m是l以上的整數(shù)[]是舍去小數(shù)點(diǎn)以下的部分的計(jì)算);輸入到具有N比特的計(jì)算精度和2N比特的計(jì)算結(jié)果的混沌計(jì)算器;用上述混沌計(jì)算器對(duì)輸入值a(aoa卜.a^)用函數(shù)式(l)進(jìn)行用整數(shù) 運(yùn)算來(lái)實(shí)行的固定小數(shù)點(diǎn)計(jì)算,產(chǎn)生2N比特的2進(jìn)數(shù)列d(dod卜.d2^);上述混沌計(jì)算器的計(jì)算是由具有2m比特的計(jì)算能力(這里所說(shuō)的 計(jì)算能力是指有整數(shù)的乘,力卩,比特移位,比特間邏輯運(yùn)算的能力) 的計(jì)算器來(lái)將N比特的整數(shù)分割成[((N-l)/m)]+l位的m比特的整數(shù) 來(lái)對(duì)函數(shù)式(l)進(jìn)行整數(shù)(分割)運(yùn)算;將上述混沌計(jì)算器的2N比特的計(jì)算結(jié)果d(dcd卜.cbM)中的前N比 特作為函數(shù)式(l)的反復(fù)計(jì)算所需要的輸入值a(aoai...aw);對(duì)上述混沌計(jì)算器的輸入值a (aoa卜.,a^)的計(jì)算結(jié)果的,在混沌 計(jì)算器的計(jì)算過(guò)程中所受的輸入a的影響的比特?cái)?shù)各不相同的,具有 不均勻的分布特性的,2N比特的d的各比特(dod卜.cbM)的特定的 比特之間進(jìn)行1對(duì)1的排他邏輯和運(yùn)算來(lái)產(chǎn)生N比特的隨機(jī)數(shù) r( ror卜.rN—i);上述在(dodL..d加.》的特定的比特間所進(jìn)行的1對(duì)1的排他邏輯 和(XOR)運(yùn)算的攪拌手法是以所產(chǎn)生的隨機(jī)數(shù)ri (i=0,l,...N-l)在此 運(yùn)算下成為其每一比特都能以不同形式受到輸入值a的所有比特的影 響,上述(dod卜.d腿)之中的di和di+N (i-0,l…N-l)之間的1對(duì)1 的排他邏輯和運(yùn)算(rrdied,)的攪拌方法為特征的隨機(jī)數(shù)產(chǎn)生方法。
全文摘要
本發(fā)明提供一種用非線性函數(shù)來(lái)產(chǎn)生具有產(chǎn)生速度,周期長(zhǎng),品質(zhì)都達(dá)到實(shí)用上的高水準(zhǔn)的隨機(jī)數(shù)生成裝置。依照函數(shù)式x<sub>t+1</sub>=4x<sub>t</sub>(1-x<sub>t</sub>),將輸入的N(N是2以上的整數(shù))比特的2進(jìn)數(shù)列變換成[((N-1)/m)]+1位的m比特的整數(shù)(m是1以上的整數(shù)[]是舍去小數(shù)點(diǎn)以下的部分的計(jì)算);由具有N比特的計(jì)算精度和2N比特的計(jì)算結(jié)果的混沌計(jì)算器,來(lái)進(jìn)行整數(shù)(分割)運(yùn)算,產(chǎn)生2N比特的2進(jìn)數(shù)列d(d<sub>0</sub>d<sub>1</sub>...d<sub>2N-1</sub>);再將d的前N比特(d<sub>0</sub>d<sub>1</sub>...d<sub>N-1</sub>)作為混沌計(jì)算器的反復(fù)計(jì)算用的輸入值,并將d的特定的比特d<sub>i</sub>和d<sub>i+N</sub>(i=0,1...N-1)之間的1對(duì)1的排他邏輯和運(yùn)算(r<sub>i</sub>=d<sub>i</sub>⊕d<sub>i+N</sub>)的結(jié)果作為隨機(jī)數(shù)r(r<sub>0</sub>r<sub>1</sub>...r<sub>N-1</sub>)輸出為特征。
文檔編號(hào)G06F7/58GK101636714SQ200880002348
公開(kāi)日2010年1月27日 申請(qǐng)日期2008年11月13日 優(yōu)先權(quán)日2007年11月20日
發(fā)明者董際國(guó) 申請(qǐng)人:董際國(guó)