專利名稱:使用自相關(guān)的隨機(jī)性測(cè)試的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及隨機(jī)數(shù)發(fā)生器的領(lǐng)域,并且具體涉及生成真二進(jìn)制隨機(jī)序列的隨機(jī)數(shù)發(fā)生器。
背景技術(shù):
隨機(jī)數(shù)發(fā)生器在計(jì)算機(jī)時(shí)代是非常重要的。在實(shí)際應(yīng)用中難以生成真正隨機(jī)的序列。例如,在一定時(shí)間段內(nèi)生成一系列1和0時(shí),在隨機(jī)數(shù)發(fā)生器的硬件部件中會(huì)發(fā)熱。生成1位消耗的功率通常比生成0位要多。因此,如果生成長(zhǎng)的1位序列,電路會(huì)變熱。因此,如果電路在其熱時(shí)生成1位,電路將“鎖定”并且生成的絕大多數(shù)都是1位而很少有0位。如果在電路發(fā)熱時(shí)生成0位,則可能出現(xiàn)不同的效果。在這種情況下,很少有長(zhǎng)的1位子序列,這構(gòu)成一種非隨機(jī)特性。在密碼應(yīng)用中,這可能導(dǎo)致泄密的災(zāi)難性結(jié)局。
因此,在執(zhí)行隨機(jī)性測(cè)試時(shí),需要檢測(cè)硬件損害和部件故障。常規(guī)的隨機(jī)性測(cè)試是通過(guò)擴(kuò)展統(tǒng)計(jì)測(cè)試?yán)鐇-平方測(cè)試、Δ-測(cè)試等等在生成的隨機(jī)數(shù)序列上執(zhí)行的。然而,實(shí)時(shí)執(zhí)行這種測(cè)試的成本很高,因?yàn)檫@樣的測(cè)試需要大量的計(jì)算處理能力。
發(fā)明內(nèi)容
本發(fā)明通過(guò)提供一種方法和設(shè)備來(lái)克服上述問(wèn)題并提供附加的優(yōu)點(diǎn),所述方法和設(shè)備用于提供在線隨機(jī)性測(cè)試,以確保生成的隨機(jī)數(shù)足夠隨機(jī)。
按照本發(fā)明的一方面,提供用于評(píng)估由隨機(jī)數(shù)發(fā)生器生成的隨機(jī)數(shù)的一種方法。該方法包括以下步驟生成隨機(jī)位的連續(xù)流;在存儲(chǔ)媒體中存儲(chǔ)生成的隨機(jī)位;將存儲(chǔ)的隨機(jī)序列移位預(yù)定量;計(jì)算存儲(chǔ)的隨機(jī)序列與移位的隨機(jī)序列之間位序列的修正乘積,以確定平均相關(guān)值;和通過(guò)將確定的平均相關(guān)值與預(yù)定的接受范圍進(jìn)行比較,確定生成的隨機(jī)數(shù)是否足夠隨機(jī)。修正乘積的值是-1和+1之一。該方法還包括以下步驟如果任何平均自相關(guān)值未落在預(yù)定的接受范圍內(nèi),確定所生成的隨機(jī)數(shù)不夠隨機(jī);在任何平均自相關(guān)值落在預(yù)定的接受范圍之外時(shí),通知生成的隨機(jī)序列不夠隨機(jī);以及在任何平均自相關(guān)值落在預(yù)定的接受范圍之外時(shí),生成新的一組隨機(jī)序列。
按照本發(fā)明的另一方面,評(píng)估由隨機(jī)數(shù)發(fā)生器生成的隨機(jī)數(shù)的一種方法包括以下步驟(a)使用隨機(jī)數(shù)發(fā)生器生成和存儲(chǔ)隨機(jī)位流;(b)將存儲(chǔ)的隨機(jī)序列移位預(yù)定量;(c)計(jì)算存儲(chǔ)的隨機(jī)數(shù)和移位的隨機(jī)數(shù)的位序列的修正乘積;(d)對(duì)修正乘積執(zhí)行指數(shù)平均運(yùn)算(A),以獲得平均自相關(guān)值;(e)將平均自相關(guān)值與預(yù)定的接受范圍進(jìn)行比較;和(f)在任何平均自相關(guān)值落在預(yù)定的接受范圍之外時(shí),確定所生成的隨機(jī)數(shù)不夠隨機(jī)。該方法還包括以下步驟重復(fù)步驟(a)-(e),直至任何計(jì)算的指數(shù)平均運(yùn)算(A)落到預(yù)定的接受范圍之外;在重復(fù)步驟(a)-(e)超過(guò)預(yù)定次數(shù)時(shí),通知生成了非隨機(jī)數(shù);并且在重復(fù)步驟(a)-(e)超過(guò)預(yù)定次數(shù)時(shí),生成新的一組隨機(jī)數(shù)。
按照本發(fā)明的再一方面,上述方法還包括以下步驟每當(dāng)生成新的位時(shí),計(jì)算并將修正乘積應(yīng)用于多個(gè)指數(shù)平均運(yùn)算(A),以及在任何指數(shù)平均運(yùn)算(A)的輸出落到預(yù)定的接受范圍之外時(shí),確定所生成的隨機(jī)數(shù)不夠隨機(jī),其中按以下公式更新指數(shù)平均運(yùn)算(A) Anew=α·Aold±1, 其中α=1-1/n,并且α落在0和1之間(0<α<1)。
按照本發(fā)明的又一方面,用于評(píng)估由隨機(jī)數(shù)發(fā)生器生成的隨機(jī)數(shù)的一種設(shè)備包括隨機(jī)發(fā)生器單元,用于生成由二進(jìn)制位構(gòu)成的隨機(jī)序列;檢測(cè)器單元,耦合到隨機(jī)發(fā)生器單元的輸出,用于檢測(cè)生成的隨機(jī)序列是否不可預(yù)測(cè);以及轉(zhuǎn)換單元,耦合到隨機(jī)發(fā)生器單元和檢測(cè)器單元的輸出,用于在確定生成的隨機(jī)序列不夠隨機(jī)時(shí),禁止所生成的隨機(jī)序列流用于后續(xù)應(yīng)用,其中存儲(chǔ)所生成的隨機(jī)位并且將之移位預(yù)定量,以獲得存儲(chǔ)的隨機(jī)序列與移位的隨機(jī)序列之間位序列的修正乘積,修正乘積被應(yīng)用于指數(shù)平均運(yùn)算(A),以確定平均自相關(guān)值,并且其中如果任何指數(shù)平均運(yùn)算(A)的輸出落在預(yù)定的接受范圍之外,確定所生成的隨機(jī)序列不夠隨機(jī)。該設(shè)備還包括用于在任何指數(shù)平均運(yùn)算(A)的輸出落在預(yù)定的接受范圍之外時(shí)發(fā)送報(bào)警信號(hào)的裝置。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),結(jié)合附圖閱讀以下的詳細(xì)描述,本發(fā)明的上述及其他優(yōu)點(diǎn)將變得顯而易見(jiàn)。
圖1表示按照本發(fā)明一個(gè)實(shí)施例的隨機(jī)發(fā)生模塊的簡(jiǎn)化方框圖; 圖2示出表示按照本發(fā)明的一個(gè)實(shí)施例對(duì)一個(gè)隨機(jī)數(shù)序列執(zhí)行的隨機(jī)性測(cè)試的示意圖;和 圖3是表示按照本發(fā)明的一個(gè)實(shí)施例測(cè)試生成的隨機(jī)數(shù)的統(tǒng)計(jì)數(shù)字的操作步驟的流程圖。
具體實(shí)施例方式 在以下的說(shuō)明中,為了解釋而并非限制的目的,說(shuō)明了具體的細(xì)節(jié),例如具體結(jié)構(gòu)、接口、技術(shù)等等,以提供本發(fā)明的透徹理解。然而,本領(lǐng)域技術(shù)人員都能明白,可以在脫離這些具體細(xì)節(jié)的其他實(shí)施例中實(shí)現(xiàn)本發(fā)明。為了簡(jiǎn)明扼要而省略了廣泛公知的設(shè)備、電路和方法的具體細(xì)節(jié),以免這些不必要的細(xì)節(jié)妨礙對(duì) 本發(fā)明的說(shuō)明。
圖1表示系統(tǒng)10的一個(gè)方框圖,按照本發(fā)明的一個(gè)示例實(shí)施例該系統(tǒng)能夠?qū)崟r(shí)測(cè)試所生成的隨機(jī)數(shù)的統(tǒng)計(jì)數(shù)字。系統(tǒng)10包括隨機(jī)數(shù)發(fā)生器(RG)12、檢測(cè)器14和轉(zhuǎn)換器16。RG12可用于輸出一系列隨機(jī)數(shù)。在本文中,術(shù)語(yǔ)“隨機(jī)數(shù)”意指任何二進(jìn)制信號(hào)序列、信號(hào)的Gaussian或任何其他分布、代表零和一之間的數(shù)的信號(hào)序列、代表十進(jìn)制數(shù)的信號(hào)序列、或包括理想隨機(jī)性的任何其他形式。RG12還代表生成的信號(hào)能夠變換成二進(jìn)制位序列的任何設(shè)備。因而,本文中的RG12以任何常規(guī)或非常規(guī)方式生成二進(jìn)制隨機(jī)位。
檢測(cè)器14檢測(cè)RG12是否正確工作以生成對(duì)于多種用途足夠隨機(jī)的隨機(jī)數(shù)據(jù)。因而,按照(下文所述)預(yù)定標(biāo)準(zhǔn)對(duì)RG12輸出的隨機(jī)數(shù)進(jìn)行其隨機(jī)性測(cè)試;如果通過(guò),轉(zhuǎn)換器16就允許生成的隨機(jī)數(shù)用于后續(xù)應(yīng)用,諸如任何電路、系統(tǒng)、處理程序、賭博應(yīng)用、模擬、統(tǒng)計(jì)學(xué)采樣、Diffie-Hellman密鑰轉(zhuǎn)換或諸如此類的使用由RG12提供的隨機(jī)數(shù)的設(shè)備。例如,轉(zhuǎn)換器16可以為密碼系統(tǒng)、音頻或視頻噪聲發(fā)生器、計(jì)算機(jī)程序或其他設(shè)備和處理過(guò)程提供輸入。因而,在檢測(cè)器14的控制下釋放轉(zhuǎn)換器16,以便在生成的隨機(jī)數(shù)被認(rèn)為不夠隨機(jī)時(shí)停止發(fā)送生成的隨機(jī)數(shù)。
現(xiàn)在,將參照?qǐng)D2和3描述有關(guān)測(cè)試隨機(jī)序列的統(tǒng)計(jì)學(xué)質(zhì)量的細(xì)節(jié)。
參見(jiàn)圖2,按照本發(fā)明的一個(gè)實(shí)施例,在RG12工作的同時(shí)對(duì)隨機(jī)數(shù)進(jìn)行實(shí)時(shí)測(cè)試,以確保所生成的隨機(jī)數(shù)足夠隨機(jī)。在操作中,由RG12生成連續(xù)的隨機(jī)位流。假定從RG12接收到這些隨機(jī)數(shù),運(yùn)行自相關(guān)測(cè)試,以確保所生成的隨機(jī)數(shù)圖案將是不規(guī)則的。如圖2所示,存儲(chǔ)初始的隨機(jī)序列a,然后向右移位規(guī)定量。盡管圖2為了便于說(shuō)明而表示向右移動(dòng)一個(gè)時(shí)隙,但是應(yīng)該理解本發(fā)明還能支持更大的移位。因此,圖中移位的位數(shù)并不是對(duì)本發(fā)明范圍強(qiáng)加限制。在其相應(yīng)時(shí)隙上將初始序列a與新移位的序列b相比較,以獲得2-位序列的修正點(diǎn)積。如果給定時(shí)隙中二進(jìn)制值相同(如果ai=bi),就給要相加的對(duì)應(yīng)項(xiàng)分配+1值;否則,給之分配-1(如果a≠b)。將這些項(xiàng)相加到一起,以構(gòu)成2-位序列的修正點(diǎn)積,計(jì)算在移位版本減去不同位數(shù)之后有多少位置具有相同的比特。按照本發(fā)明的一個(gè)實(shí)施例,為了使生成的序列是真正隨機(jī)的,-1和+1項(xiàng)的數(shù)量必須大致相等。在此,“大致”的意思是提取n個(gè)采樣,-1和+1出現(xiàn)的頻率必須落在小于n的一個(gè)預(yù)定的門限范圍之內(nèi)。
從以下的數(shù)值表達(dá)式中可以更加容易地明白本發(fā)明的一些上述優(yōu)點(diǎn)。對(duì)于b0,b1,b2,b3...,的位序列,從b0開(kāi)始的k長(zhǎng)度的自相關(guān)矢量如下。在此,如果我們將
解釋為一種抽象乘法運(yùn)算,如果兩次運(yùn)算相同,則其結(jié)果就是+1,如果不同,則是-1,自相關(guān)矢量的分量
注意ai的順序值有許多共同元素。例如,用iam來(lái)表示從bi開(kāi)始具有偏移m的相關(guān)值
注意僅有0a1的第一項(xiàng)和1a1的最后一項(xiàng)沒(méi)有重復(fù)。因此,存儲(chǔ)過(guò)去位或先前計(jì)算的2-位乘積
允許我們?cè)谂c其長(zhǎng)度k成比例的時(shí)間計(jì)算出整個(gè)自相關(guān)矢量。而且,為了節(jié)省存儲(chǔ)和執(zhí)行時(shí)間,在本發(fā)明中對(duì)自相關(guān)計(jì)算應(yīng)用指數(shù)平均;然而,也可以采用本領(lǐng)域技術(shù)人員熟知的其它類型的平均技術(shù)。指數(shù)平均具有這樣的性性,使得在每次在累加器A中更新平均值時(shí),舊的平均值將具有不斷減少的影響。連續(xù)執(zhí)行測(cè)試以評(píng)估隨機(jī)序列的統(tǒng)計(jì)學(xué)質(zhì)量,因而必須在指數(shù)平均未被使用時(shí)周期性清除計(jì)數(shù)器。
指數(shù)平均按以下方式工作每當(dāng)獲得一個(gè)數(shù)值b時(shí),利用落在0和1之間的一個(gè)系數(shù)α(0<α<1)乘以累加器A并且然后加上bAnew=α·Aold+b。為了得到有用的平均效果,α的值被選擇為接近1,α=1-1/n,n>>1。在這種情況下,logα≈-1/n,而平均位的半衰期是k≈n·log2≈≈0.30103·n。在n位之后,最早一位的加權(quán)變成了(1-1/n)n≈1/e≈0.367879。在此處,e是自然算法的底(Euler常數(shù)),因而項(xiàng)n可以被稱為一位的自然壽命。如果將被平均的所有值是1,累加器值是1+α+α2+...=1/(1-α)=n,而如果所有位都是0,則累加器值就是0。注意,指數(shù)平均的預(yù)期值是個(gè)別值的預(yù)期值的指數(shù)平均值。
從b0開(kāi)始的指數(shù)自相關(guān)矢量定義為以下的無(wú)限求和
指數(shù)自相關(guān)的若于優(yōu)點(diǎn)(用iem代表從bi開(kāi)始且偏移為m的指數(shù)相關(guān)值)如下 (1)自相關(guān)矢量的連續(xù)值較容易計(jì)算
(2)僅需要存儲(chǔ)最后的k位(相對(duì)于具有標(biāo)準(zhǔn)相關(guān)的2k而言);和 (3)利用參數(shù)α=1-1/n(n是相關(guān)項(xiàng)的自然壽命),能夠容易地(甚至動(dòng)態(tài)地)改變相關(guān)的有效長(zhǎng)度。
如上所述,指數(shù)平均用于隨著累加器按一定的0<α<1系數(shù)遞減而清除計(jì)數(shù)器;這樣,累加器在運(yùn)算模式期間從不會(huì)變得過(guò)大。一旦對(duì)每個(gè)累加器執(zhí)行指數(shù)平均,將指數(shù)平均值與預(yù)定的接受范圍相比較。在本實(shí)施例中,通過(guò)將每個(gè)累加器的值與預(yù)定的接受范圍值相比較,確定所生成的隨機(jī)數(shù)圖案是否是基本上隨機(jī)的。如果在平均過(guò)程期間任何累加器的值落到預(yù)定范圍值之外,推斷所生成的隨機(jī)數(shù)不是不可預(yù)測(cè)的?;蛘?,在測(cè)試反復(fù)失敗時(shí),可以設(shè)置一個(gè)門限值來(lái)通知用戶。這樣,能使用一組已知質(zhì)量良好的隨機(jī)序列事先確定指數(shù)平均限度,使得這些隨機(jī)序列全都落在可接受范圍內(nèi)。測(cè)試中使用的實(shí)際范圍由操作人員選擇地設(shè)置,以便能夠根據(jù)所生成的隨機(jī)序列對(duì)于未被授權(quán)方是否是可預(yù)測(cè)的不同靈敏度而作出選擇。
圖3是表示按照本發(fā)明用于測(cè)試隨機(jī)序列的統(tǒng)計(jì)質(zhì)量的操作步驟的流程圖。長(zhǎng)方形單元代表計(jì)算機(jī)軟件指令,而菱形單元代表影響利用長(zhǎng)方形塊表示的計(jì)算機(jī)軟件指令的執(zhí)行的計(jì)算機(jī)軟件指令。或者,處理和判決框代表由功能上等效的電路例如數(shù)字信號(hào)處理器電路或?qū)S眉呻娐?ASIC)執(zhí)行的步驟。應(yīng)注意許多例行程序元素例如循環(huán)和變量的初始化以及臨時(shí)變量的使用沒(méi)有表示出。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,除非另有解釋,所述步驟的具體順序僅僅是為了說(shuō)明,并且可以被改變而不脫離本發(fā)明的精神。
在操作中,在步驟100由隨機(jī)數(shù)發(fā)生器12生成連續(xù)的二進(jìn)制位的隨機(jī)流。在一個(gè)環(huán)形緩沖器中存儲(chǔ)生成的最后隨機(jī)位之中選擇的數(shù)量為k的隨機(jī)位,然后在步驟120讀出存儲(chǔ)的隨機(jī)數(shù)并進(jìn)行處理用于比較目的。在步驟140計(jì)算最后生成的隨機(jī)數(shù)和所有存儲(chǔ)的隨機(jī)數(shù)的特殊乘積。然后,在步驟160利用乘積-1或+1更新指數(shù)平均累加器,并且將累加器與預(yù)定的接受范圍進(jìn)行比較。如果任何累加器落在預(yù)定的接受范圍之外,在步驟180,確定檢測(cè)到規(guī)則的圖案,并且將計(jì)數(shù)器增1。否則,該步驟返回到生成隨機(jī)數(shù)的步驟100,并且將計(jì)數(shù)器復(fù)位。在步驟200,如果在步驟200中計(jì)數(shù)器的值大于門限值,在步驟220釋放轉(zhuǎn)換器16,以停止隨機(jī)數(shù)流用于后續(xù)應(yīng)用。此時(shí),可以放棄所生成的隨機(jī)數(shù),并且能夠?qū)ι尚码S機(jī)數(shù)的整個(gè)處理程序進(jìn)行初始化。或者,可以向操作人員通知所生成的隨機(jī)數(shù)不夠隨機(jī)。最后,如果在步驟200中計(jì)數(shù)器的值沒(méi)有超過(guò)門限值,則處理程序返回到步驟100。
為了實(shí)現(xiàn)上述各個(gè)步驟,可以將它們編程為應(yīng)用程序內(nèi)包括的功能,并且本領(lǐng)域中熟練的程序員可以以例如C、Visual Basic、Java、Perl、C++等等的語(yǔ)言利用常規(guī)編程技術(shù)來(lái)完成。在一個(gè)實(shí)施例中,可以如下所述(使用C編程語(yǔ)言)構(gòu)成圖3中所述的方法。為了簡(jiǎn)化,采用浮點(diǎn)算法來(lái)完成測(cè)試。
附錄MS Visual C代碼 /******************************************************************\* AutoCorr.c* AutoCorr<#random bits><bit generator type><bit generator param>* Generates test bits* Calculates exponentially weighted autocorrelation at offsets 1..8bit* Prints test statistics* Remfloating point arithmetic is used.* Follow the example of BitAvg.c to convert to fix point.Largeraveraging* length achieved if sums are decremented only at every k-thiteration!* AutoCorr 1e8 0 0.5->* No large or small autocorrelation* 458.031 571.863* 451.444 566.108* 453.109 565.476* 454.889 567.197* 453.545 564.591* 454.121 577.029* 457.612 571.381* 451.539 571.281** AutoCorr 1e6 1 01001110010001->* At bit 2099 the offset 6 autocorrelation 446.883 is out of range** vers.1.0 04/17/01Created by Laszlo Hars*\******************************************************************/#include<stdio.h>#include<stdlib.h>//#offsets=2^k for simple implementation of circular buffers#define LOGOFFS 3#define OFFSETS (1<<LOGOFFS)#define CIRC(X) ((X)&(OFFSETS-1))//Multiplyer=1-1/2^10#define W0.9990234375#define AV 512.0#define LO 447.0#define HI 586.0<!-- SIPO <DP n="7"> --><dp n="d7"/>#define MAX(A,B)((A)>(B)?(A)(B))#define MIN(A,B)((A)<(B)?(A)(B))//External function prototypesvoid BitGenInit(int argc,char*argv[]);unsigned int NextBit();int main(int argc,char*argv[]){int bits[OFFSETS],b,i,j,n=(int)atof(argv[1]);double a[OFFSETS],x[OFFSETS],y[OFFSETS];if( argc<4){printf(″UsageAutoCorr<#random bits><bit generator type><bitgenerator params...>\n″);putchar(′\a′);//rings the bellexit(1);}BitGenInit(argc,argv);for(j=0;j<OFFSETS;++j){ //at first j=0offset 8,j=17,...j=7offset 1bits[j]=NextBit();//set up circular buffer of lastfew bitsa[i]=AV //ideal pastx[j]=0.0; //max for debug,evaly[j]=1e9;}//min for debug,evalfor(i=OFFSETS;i<n;++i){b=NextBit();for(j=0;j<OFFSETS;++j){ //j=CIRC[i]offset 8,...j=CIRC[i+7]offset 1a[j]=a[j]*w+(bits[CIRC(i+j)]==b);x[j]=MAX(a[j].x[j]) //for debug,evaly[j]=MIN(a[j].y[j]) //for debug,evalif(a[j]<LO||a[j]>HI){printf(″At bit %d the offset %d autocorrelation %g is out ofrange\n″,i,OFFSETS-j,a [j]);exit(2);}}bits[CIRC(i)]=b;}printf(″No large or small autocorrelation\n″);for(j=0;j<OFFSETS;++j)printf(″%g %g\n″,y[j],x[j]);//show theresults for debug,eval} 盡管已經(jīng)表示和描述了本發(fā)明的優(yōu)選實(shí)施例,但是本領(lǐng)域的技術(shù)人員將理解無(wú)需脫離本發(fā)明的真實(shí)范疇而可能對(duì)其中的組成單元進(jìn)行各種各樣的修改和變更以及等效的替代。另外,為了適應(yīng)具體情況和本發(fā)明的教導(dǎo),無(wú)需脫離其核心范圍而還可以進(jìn)行許多變更。因此,并不打算將本發(fā)明限于作為實(shí)現(xiàn)本發(fā)明的最佳模式而公開(kāi)的具體實(shí)施例,并且本發(fā)明還包括落入所附的權(quán)利要求書范圍內(nèi)的所有實(shí)施例。
權(quán)利要求
1.用于評(píng)估由隨機(jī)數(shù)發(fā)生器(12)生成的隨機(jī)數(shù)的一種方法,該方法包括以下步驟
-生成隨機(jī)位的連續(xù)流;
-在存儲(chǔ)媒體中存儲(chǔ)所述生成的隨機(jī)位;
-將所述存儲(chǔ)的隨機(jī)序列移位預(yù)定量;
-計(jì)算所述存儲(chǔ)的隨機(jī)序列與所述移位的隨機(jī)序列之間位序列的修正乘積,以確定平均相關(guān)值;和
-通過(guò)將所述確定的平均相關(guān)值與預(yù)定的接受范圍進(jìn)行比較,確定所述生成的隨機(jī)數(shù)是否足夠隨機(jī)。
2.按照權(quán)利要求1的方法,其中所述修正乘積的值是-1和+1之一。
3.按照權(quán)利要求2的方法,還包括以下步驟在任何平均自相關(guān)值未落在所述預(yù)定的接受范圍內(nèi)時(shí),確定所述生成的隨機(jī)數(shù)不夠隨機(jī)。
4.按照權(quán)利要求2的方法,還包括以下步驟在任何平均自相關(guān)值落在所述預(yù)定的接受范圍之外時(shí),通知所述生成的隨機(jī)序列不夠隨機(jī)。
5.按照權(quán)利要求2的方法,還包括以下步驟在任何平均自相關(guān)值落在所述預(yù)定的接受范圍之外時(shí),生成新的一組隨機(jī)序列。
6.按照權(quán)利要求1的方法,還包括以下步驟每當(dāng)生成新的位時(shí),將所述點(diǎn)積應(yīng)用于多個(gè)指數(shù)平均運(yùn)算(A)。
7.按照權(quán)利要求6的方法,其中按照以下公式更新所述指數(shù)平均運(yùn)算(A)
Anew=α·Aold±1,
其中α=1-1/n,并且α落在0和1之間(0<α<1)。
8.按照權(quán)利要求6的方法,還包括以下步驟在任何所述指數(shù)平均運(yùn)算(A)的輸出落到所述預(yù)定的接受范圍之外時(shí),確定所述生成的隨機(jī)數(shù)不夠隨機(jī)。
9.用于評(píng)估由隨機(jī)數(shù)發(fā)生器(12)生成的隨機(jī)數(shù)的一種方法,該方法包括以下步驟
(a)使用所述隨機(jī)數(shù)發(fā)生器生成和存儲(chǔ)隨機(jī)位流;
(b)將所述存儲(chǔ)的隨機(jī)序列移位預(yù)定量;
(c)計(jì)算所述存儲(chǔ)的隨機(jī)數(shù)和所述移位的隨機(jī)數(shù)之間位序列的修正乘積;
(d)對(duì)所述修正乘積執(zhí)行指數(shù)平均運(yùn)算(A),以獲得平均自相關(guān)值;
(e)將平均自相關(guān)值與預(yù)定的接受范圍進(jìn)行比較;和
(f)在任何平均自相關(guān)值落在所述預(yù)定的接受范圍之外時(shí),確定所述生成的隨機(jī)數(shù)不夠隨機(jī)。
10.按照權(quán)利要求9的方法,還包括以下步驟
重復(fù)所述步驟(a)-(e),直至任何所述計(jì)算的指數(shù)平均運(yùn)算(A)落到所述預(yù)定的接受范圍之外。
11.按照權(quán)利要求9的方法,還包括以下步驟在重復(fù)所述步驟(a)-(e)超過(guò)預(yù)定次數(shù)時(shí),通知生成了非隨機(jī)數(shù)。
12.按照權(quán)利要求9的方法,還包括以下步驟在重復(fù)所述步驟(a)-(e)超過(guò)預(yù)定次數(shù)時(shí),生成新的一組隨機(jī)數(shù)。
13.按照權(quán)利要求9的方法,還包括以下步驟按照以下公式更新所述指數(shù)平均運(yùn)算(A)
Anew=α·Aold±1,
其中α=1-1/n,并且α落在0和1之間(0<α<1)。
14.用于評(píng)估由隨機(jī)數(shù)發(fā)生器生成的隨機(jī)數(shù)的一種設(shè)備,包括
隨機(jī)發(fā)生器單元(12),用于生成由二進(jìn)制位構(gòu)成的隨機(jī)序列;
檢測(cè)器單元(14),耦合到所述隨機(jī)發(fā)生器單元(12)的輸出,用于檢測(cè)所述生成的隨機(jī)序列是否足夠隨機(jī);和
轉(zhuǎn)換單元(16),耦合到所述隨機(jī)發(fā)生器(12)和所述檢測(cè)器單元(14)的輸出,用于在確定所述生成的隨機(jī)序列不夠隨機(jī)時(shí)禁止所述生成的隨機(jī)序列流用于后續(xù)應(yīng)用,
其中存儲(chǔ)所述生成的隨機(jī)位并且將所述生成的隨機(jī)位移位預(yù)定量,以獲得所述存儲(chǔ)的隨機(jī)序列與所述移位的隨機(jī)序列之間位序列的修正乘積,將所述修正乘積應(yīng)用于指數(shù)平均運(yùn)算(A),以確定平均自相關(guān)值,以及其中如果任何所述指數(shù)平均運(yùn)算(A)的輸出落在預(yù)定的接受范圍之外,確定所述生成的隨機(jī)序列不夠隨機(jī)。
15.按照權(quán)利要求14的設(shè)備,還包括用于在任何所述指數(shù)平均運(yùn)算(A)的輸出落在所述預(yù)定的接受范圍之外時(shí)發(fā)送報(bào)警信號(hào)的裝置。
16.按照權(quán)利要求14的設(shè)備,其中按照以下公式執(zhí)行所述指數(shù)平均運(yùn)算(A)
Anew=α·Aold±1,
其中α=1-1/n,并且α落在0和1之間(0<α<1)。
17一種機(jī)器可讀媒體,上面存儲(chǔ)有代表指令序列的數(shù)據(jù),并且該指令序列在由處理器執(zhí)行時(shí)使該處理器
-存儲(chǔ)外部生成的二進(jìn)制位的隨機(jī)序列的多個(gè)位;
-將所述存儲(chǔ)的隨機(jī)序列移位預(yù)定量;
-計(jì)算所述存儲(chǔ)的隨機(jī)序列與所述移位的隨機(jī)序列之間位序列的修正點(diǎn)積,以確定平均自相關(guān)值;和
-通過(guò)將所有所述確定的平均自相關(guān)值與預(yù)定的接受范圍進(jìn)行比較,確定所述生成的隨機(jī)數(shù)是否足夠隨機(jī)。
18.按照權(quán)利要求17的存儲(chǔ)媒體,其中在任何平均自相關(guān)值落在所述預(yù)定的接受范圍之外時(shí),確定所述生成的隨機(jī)數(shù)不夠隨機(jī)。
19.按照權(quán)利要求17的存儲(chǔ)媒體,其中在任何平均自相關(guān)值落在所述預(yù)定的接受范圍之外時(shí),所述處理器還用于生成新的一組隨機(jī)位。
20.按照權(quán)利要求17的存儲(chǔ)媒體,其中每當(dāng)生成新的位時(shí),所述處理器還用于將所述修正乘積應(yīng)用于指數(shù)平均運(yùn)算(A)。
21.按照權(quán)利要求21的存儲(chǔ)媒體,其中按照以下公式計(jì)算所述指數(shù)平均運(yùn)算(A)
Anew=α·Aold±1,
其中α=1-1/n,并且α落在0和1之間(0<α<1)。
全文摘要
本發(fā)明是用于實(shí)時(shí)測(cè)試由隨機(jī)數(shù)發(fā)生器生成的隨機(jī)數(shù)的方法和設(shè)備。在生成隨機(jī)數(shù)序列時(shí),存儲(chǔ)多個(gè)最后的數(shù),然后將存儲(chǔ)的隨機(jī)數(shù)移位預(yù)定量,以獲得存儲(chǔ)的隨機(jī)數(shù)和移位的隨機(jī)數(shù)之間位序列的特殊類型的點(diǎn)積。每當(dāng)生成新的隨機(jī)位時(shí),計(jì)算平均自相關(guān)值。此后,通過(guò)將平均自相關(guān)值與預(yù)定的接受范圍進(jìn)行比較,確定所生成的隨機(jī)數(shù)是否足夠隨機(jī)。
文檔編號(hào)G06F17/18GK1636184SQ0380426
公開(kāi)日2005年7月6日 申請(qǐng)日期2003年2月3日 優(yōu)先權(quán)日2002年2月21日
發(fā)明者L·哈爾斯 申請(qǐng)人:皇家飛利浦電子股份有限公司