本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種隨機(jī)數(shù)的生成及獲取方法和裝置。
背景技術(shù):
隨著隨機(jī)數(shù)在計(jì)算機(jī)領(lǐng)域應(yīng)用越來越廣,對產(chǎn)生的隨機(jī)數(shù)有越來越高的要求。目前,常用隨機(jī)數(shù)產(chǎn)生的方法有兩種,一種是軟件方式,用系統(tǒng)時(shí)間作為隨機(jī)數(shù)產(chǎn)生的種子,再根據(jù)系統(tǒng)函數(shù)產(chǎn)生隨機(jī)數(shù)。另一種是硬件方式,設(shè)計(jì)產(chǎn)生隨機(jī)數(shù)的硬件設(shè)備,根據(jù)隨機(jī)信號產(chǎn)生隨機(jī)數(shù)。
但是,軟件使用系統(tǒng)默認(rèn)的隨機(jī)數(shù)生成方法存在以下缺點(diǎn):如果在同一時(shí)間點(diǎn)(同一秒,或者同一毫秒)下,產(chǎn)生的隨機(jī)數(shù)重復(fù)概率很高,從而導(dǎo)致隨機(jī)數(shù)分布不均衡,即產(chǎn)生偽隨機(jī)數(shù)。因?yàn)?,在?jì)算機(jī)應(yīng)用系統(tǒng)中,使用時(shí)間做為隨機(jī)數(shù)產(chǎn)生的種子,在較短時(shí)間內(nèi),例如在相同毫秒或秒數(shù)的時(shí)間段內(nèi)生產(chǎn)的隨機(jī)數(shù),因時(shí)間種子數(shù)相等。因此生成的隨機(jī)數(shù)會存在重復(fù)率高,且分布不均衡的缺點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
本申請的目的旨在至少在一定程度上解決上述的技術(shù)問題之一。
為此,本申請的第一個(gè)目的在于提出一種隨機(jī)數(shù)的生成方法,該方法通過生成包括n個(gè)存儲單元存儲隨機(jī)數(shù)的隨機(jī)數(shù)存儲數(shù)組,接著對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,當(dāng)接收隨機(jī)數(shù)獲取指令時(shí),從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元讀取隨機(jī)數(shù),通過該申請實(shí)施例,可以在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡,因此本申請的隨機(jī)數(shù)生成方法具有較好的隨機(jī)性。
本申請的第二個(gè)目的在于提出了一種隨機(jī)數(shù)的生成裝置。
本申請的第三個(gè)目的在于提出了一種隨機(jī)數(shù)的獲取方法。
本申請的第四個(gè)目的在于提出了一種隨機(jī)數(shù)的獲取裝置。
為達(dá)上述目的,根據(jù)本申請第一方面實(shí)施例提出的一種隨機(jī)數(shù)的生成方法,包括以下步驟:生成隨機(jī)數(shù)存儲數(shù)組,其中,所述隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)所述存儲單元存儲一個(gè)隨機(jī)數(shù),其中,n為正整數(shù);對所述隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排;以及接收隨機(jī)數(shù)獲取指令,并根據(jù)所述隨機(jī)數(shù)獲取指令從所述隨機(jī)數(shù)存儲數(shù)組中 對應(yīng)的存儲單元中讀取所述存儲單元存儲的隨機(jī)數(shù)。
通過本申請實(shí)施例的隨機(jī)數(shù)生成方法,首先生成包括n個(gè)存儲單元且每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù)的隨機(jī)數(shù)存儲數(shù)組,接著對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,從而可以在接收到隨機(jī)數(shù)獲取指令時(shí),從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡。因此本申請的隨機(jī)數(shù)生成方法具有較好的隨機(jī)性。
在本申請的一個(gè)實(shí)施例中,所述n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
在本申請的一個(gè)實(shí)施例中,所述的隨機(jī)數(shù)的生成方法,每個(gè)所述存儲單元具有標(biāo)識值,其中,所述對所述隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行混排具體包括:根據(jù)隨機(jī)函數(shù)生成隨機(jī)值,并根據(jù)所述隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值;以及根據(jù)所述標(biāo)識值和預(yù)設(shè)調(diào)換規(guī)則將所述待調(diào)換存儲單元與目標(biāo)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
在本申請的一個(gè)實(shí)施例中,所述根據(jù)隨機(jī)函數(shù)生成隨機(jī)值具體包括:當(dāng)i大于1且小于n時(shí),根據(jù)當(dāng)前時(shí)間和第i-1次隨機(jī)值生成第i次隨機(jī)值,其中,i為調(diào)換次數(shù);當(dāng)i等于1時(shí),根據(jù)當(dāng)前時(shí)間生成所述第i次隨機(jī)值。
在本申請的一個(gè)實(shí)施例中,所述預(yù)設(shè)調(diào)換規(guī)則為:當(dāng)進(jìn)行第i次調(diào)換時(shí),將第i次隨機(jī)值對應(yīng)的存儲單元與第(n+1-i)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
在本申請的一個(gè)實(shí)施例中,所述根據(jù)所述隨機(jī)數(shù)獲取指令從所述隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取所述存儲單元存儲的隨機(jī)數(shù)具體包括:根據(jù)所述隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值;根據(jù)所述當(dāng)前已被讀取的存儲單元的標(biāo)識值讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
為達(dá)上述目的,根據(jù)本申請的第二方面實(shí)施例提出的一種隨機(jī)數(shù)的生成裝置,包括:生成模塊,用于生成隨機(jī)數(shù)存儲數(shù)組,其中,所述隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)所述存儲單元存儲一個(gè)隨機(jī)數(shù),其中,n為正整數(shù);隨機(jī)混排模塊,用于對所述隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排;以及讀取模塊,用于接收隨機(jī)數(shù)獲取指令,并根據(jù)所述隨機(jī)數(shù)獲取指令從所述隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取所述存儲單元存儲的隨機(jī)數(shù)。
本申請實(shí)施例的隨機(jī)數(shù)生成裝置,首先生成模塊生成包括n個(gè)存儲單元且每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù)的隨機(jī)數(shù)存儲數(shù)組,接著隨機(jī)混排模塊對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,從而讀取模塊可以在在接收到隨機(jī)數(shù)獲取指令時(shí),從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于隨機(jī)混排模塊對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且 分布均衡。因此本申請的隨機(jī)數(shù)生成裝置具有較好的隨機(jī)性。
在本申請的一個(gè)實(shí)施例中,所述n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
在本申請的一個(gè)實(shí)施例中,所述的隨機(jī)數(shù)的生成裝置,每個(gè)所述存儲單元具有標(biāo)識值,其中,所述隨機(jī)混排模塊包括:標(biāo)識值生成子模塊,用于根據(jù)隨機(jī)函數(shù)生成隨機(jī)值,并根據(jù)所述隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值;以及調(diào)換子模塊,用于根據(jù)所述標(biāo)識值和預(yù)設(shè)調(diào)換規(guī)則將所述待調(diào)換存儲單元與目標(biāo)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
在本申請的一個(gè)實(shí)施例中,所述的隨機(jī)數(shù)的生成裝置,當(dāng)i大于1且小于n時(shí),所述標(biāo)識值生成子模塊根據(jù)當(dāng)前時(shí)間和第i-1次隨機(jī)值生成第i次隨機(jī)值,其中,i為調(diào)換次數(shù);當(dāng)i等于1時(shí),所述標(biāo)識值生成子模塊根據(jù)當(dāng)前時(shí)間生成所述第i次隨機(jī)值。
在本申請的一個(gè)實(shí)施例中,所述預(yù)設(shè)調(diào)換規(guī)則為:當(dāng)進(jìn)行第i次調(diào)換時(shí),將第i次隨機(jī)值對應(yīng)的存儲單元與第(n+1-i)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
在本申請的一個(gè)實(shí)施例中,所述讀取模塊具體包括:獲取子模塊,用于根據(jù)所述隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值;讀取子模塊,用于根據(jù)所述當(dāng)前已被讀取的存儲單元的標(biāo)識值讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
為達(dá)上述目的,根據(jù)本申請的第三方面實(shí)施例提出的一種隨機(jī)數(shù)的獲取方法,包括以下步驟:接收隨機(jī)數(shù)獲取指令,并獲取隨機(jī)數(shù)存儲數(shù)組,其中,所述隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)所述存儲單元存儲一個(gè)隨機(jī)數(shù),且所述隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置通過隨機(jī)混排確定,其中,n為正整數(shù);根據(jù)所述隨機(jī)數(shù)獲取指令從所述隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中獲取所述存儲單元存儲的隨機(jī)數(shù)。
通過本申請實(shí)施例的隨機(jī)數(shù)獲取方法,首先接收到隨機(jī)數(shù)獲取指令,接著獲取隨機(jī)數(shù)存儲數(shù)組并通過隨機(jī)混排確定隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置,從而根據(jù)接收到隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡。因此本申請的隨機(jī)數(shù)獲取方法具有較好的隨機(jī)性。
在本申請的一個(gè)實(shí)施例中,所述n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
在本申請的一個(gè)實(shí)施例中,所述的隨機(jī)數(shù)的獲取方法,每個(gè)所述存儲單元具有標(biāo)識值,其中,通過以下步驟對所述隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置通過隨機(jī)混排:根據(jù)隨機(jī)函數(shù)生成隨機(jī)值,并根據(jù)所述隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值;以及根據(jù)所述標(biāo)識值和預(yù)設(shè)調(diào)換規(guī)則將所述待調(diào)換存儲單元與目標(biāo)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
在本申請的一個(gè)實(shí)施例中,所述根據(jù)所述隨機(jī)數(shù)獲取指令從所述隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中獲取所述存儲單元存儲的隨機(jī)數(shù)具體包括:根據(jù)所述隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值;根據(jù)所述當(dāng)前已被讀取的存儲單元的標(biāo)識值獲取下一 個(gè)存儲單元存儲的隨機(jī)數(shù)。
為達(dá)上述目的,根據(jù)本申請的第四方面實(shí)施例提出的一種隨機(jī)數(shù)的獲取裝置,包括:接收模塊,用于接收隨機(jī)數(shù)獲取指令;隨機(jī)數(shù)存儲數(shù)組獲取模塊,用于獲取隨機(jī)數(shù)存儲數(shù)組,其中,所述隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)所述存儲單元存儲一個(gè)隨機(jī)數(shù),且所述隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置通過隨機(jī)混排確定,其中,n為正整數(shù);隨機(jī)數(shù)獲取模塊,用于根據(jù)所述隨機(jī)數(shù)獲取指令從所述隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中獲取所述存儲單元存儲的隨機(jī)數(shù)。
通過本申請實(shí)施例的隨機(jī)數(shù)獲取裝置,首先接收模塊接收到隨機(jī)數(shù)獲取指令,接著隨機(jī)數(shù)存儲數(shù)組獲取模塊獲取隨機(jī)數(shù)存儲數(shù)組并通過隨機(jī)混排確定隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置,從而隨機(jī)數(shù)獲取模塊根據(jù)接收到隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡。因此本申請的隨機(jī)數(shù)獲取裝置具有較好的隨機(jī)性。
在本申請的一個(gè)實(shí)施例中,所述n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
在本申請的一個(gè)實(shí)施例中,所述隨機(jī)數(shù)獲取模塊具體包括:第一獲取子模塊,用于根據(jù)所述隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值;第二獲取子模塊,用于根據(jù)所述當(dāng)前已被讀取的存儲單元的標(biāo)識值獲取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
本申請附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本申請的實(shí)踐了解到。
附圖說明
本申請的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是根據(jù)本申請一個(gè)實(shí)施例的隨機(jī)數(shù)的生成方法的流程圖;
圖2是根據(jù)本申請一個(gè)實(shí)施例的獲取隨機(jī)數(shù)的流程圖;
圖3是根據(jù)本申請一個(gè)實(shí)施例對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排的方法流程圖;
圖4是本申請一個(gè)實(shí)施例的隨機(jī)數(shù)的生成裝置的結(jié)構(gòu)示意圖;
圖5是根據(jù)本申請另一個(gè)實(shí)施例的隨機(jī)數(shù)的生成裝置的結(jié)構(gòu)示意圖;以及
圖6是根據(jù)本申請又一個(gè)實(shí)施例的隨機(jī)數(shù)的生成裝置的結(jié)構(gòu)示意圖;
圖7是根據(jù)本申請一個(gè)實(shí)施例的隨機(jī)數(shù)的獲取方法的流程圖;
圖8根據(jù)本申請一個(gè)實(shí)施例的隨機(jī)數(shù)的獲取裝置的結(jié)構(gòu)示意圖;
圖9是根據(jù)本申請另一個(gè)實(shí)施例的隨機(jī)數(shù)的獲取裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本申請的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本申請,而不能理解為對本申請的限制。
本申請通過隨機(jī)混排的方式對隨機(jī)數(shù)存儲數(shù)組里的存儲單元進(jìn)行隨機(jī)混排,使得隨機(jī)數(shù)存儲數(shù)組中的隨機(jī)數(shù)順序完全隨機(jī),從而解決了傳統(tǒng)隨機(jī)函數(shù)較大概率出現(xiàn)重復(fù)導(dǎo)致分布不平衡的問題。在需要獲取隨機(jī)數(shù)時(shí),可以從該隨機(jī)數(shù)存儲數(shù)組中獲取對應(yīng)的隨機(jī)數(shù)。
圖1是根據(jù)本申請一個(gè)實(shí)施例的隨機(jī)數(shù)的生成方法的流程圖。
如圖1所示,本申請實(shí)施例的隨機(jī)數(shù)的生成方法包括以下步驟:
s110,生成隨機(jī)數(shù)存儲數(shù)組,其中,隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù),其中,n為正整數(shù)。
在本申請的實(shí)施例中,n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
可以理解的是,在本申請的實(shí)施例中,生成的隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元存儲的隨機(jī)數(shù)是不重復(fù)的,例如,一個(gè)存儲單元存儲的一個(gè)隨機(jī)數(shù)是2,那么其它存儲單元存儲的隨機(jī)數(shù)都不是2。
在本申請的實(shí)施例中,n個(gè)存儲單元可以分別存儲1至n個(gè)整數(shù),從而每個(gè)存儲單元存儲的隨機(jī)數(shù)與其他的均不同。
在本申請的另一個(gè)實(shí)施例中,隨機(jī)數(shù)存儲數(shù)組的長度是可以配置的,根據(jù)需要對隨機(jī)數(shù)存儲數(shù)組的長度提前進(jìn)行設(shè)置。
s120,對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排。
需要說明的是,本申請實(shí)施例所述的隨機(jī)混排是指對隨機(jī)數(shù)存儲數(shù)組中n個(gè)存儲單元存儲的隨機(jī)數(shù)進(jìn)行隨機(jī)調(diào)換,從而使得存儲單元中存儲的隨機(jī)數(shù)的順序完全隨機(jī),從而解決現(xiàn)有技術(shù)中隨機(jī)函數(shù)較大概率出現(xiàn)重復(fù)導(dǎo)致分布不平衡的問題。在本申請的實(shí)施例中,可以采用多種方式對n個(gè)存儲單元存儲的隨機(jī)數(shù)進(jìn)行隨機(jī)調(diào)換,在后續(xù)的實(shí)施例中將對這些方式進(jìn)行詳細(xì)介紹。對于本領(lǐng)域技術(shù)人員而言,可采用多種方式對隨機(jī)數(shù)存儲數(shù)組中存儲的隨機(jī)數(shù)進(jìn)行隨機(jī)混排,從而達(dá)到隨機(jī)數(shù)的順序完全隨機(jī)的目的,因此并不限于本申請以下實(shí)施例所提到的隨機(jī)調(diào)換的算法,任何能夠達(dá)到上述目的的算法均應(yīng)包含在本申請的保護(hù)范圍之內(nèi)。
s130,接收隨機(jī)數(shù)獲取指令,并根據(jù)隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。
具體而言,在本申請的實(shí)施例中,接收隨機(jī)數(shù)獲取指令之后,可以順序地從隨機(jī)數(shù)存儲數(shù)組中依次讀取對應(yīng)的隨機(jī)數(shù),也可以隨機(jī)地從隨機(jī)數(shù)存儲數(shù)組中依次讀取對應(yīng)的隨機(jī)數(shù)。當(dāng)然在本申請的實(shí)施例中,還可以采用其他的方式從隨機(jī)數(shù)存儲數(shù)組中讀取對應(yīng)的隨機(jī)數(shù)。
具體地,在本申請的一個(gè)具體實(shí)施例中,在接收到隨機(jī)數(shù)獲取指令之后,根據(jù)隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值(即上一次被讀取的存儲單元的標(biāo)識值),根據(jù)當(dāng)前已被讀取的存儲單元的標(biāo)識值讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
需要說明的是,在每一次接收到隨機(jī)數(shù)獲取指令之后,進(jìn)一步判斷已被讀取的存儲單元是否為隨機(jī)數(shù)存儲數(shù)組中的最后一個(gè)存儲單元。如果不是隨機(jī)數(shù)存儲數(shù)組中的最后一個(gè)存儲單元,則繼續(xù)讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。如果是隨機(jī)數(shù)存儲數(shù)組中的最后一個(gè)存儲單元,則需要重新生成新的隨機(jī)數(shù)存儲數(shù)組,即執(zhí)行步驟s110。
本申請實(shí)施例的隨機(jī)數(shù)的生成方法,首先生成包括n個(gè)存儲單元且每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù)的隨機(jī)數(shù)存儲數(shù)組,接著對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,從而可以在接收到隨機(jī)數(shù)獲取指令時(shí),從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡,因此本申請的隨機(jī)數(shù)生成方法具有較好的隨機(jī)性。
為了使得本領(lǐng)域的技術(shù)人員能夠更加清楚地了解本申請的獲取隨機(jī)數(shù)流程,下面結(jié)合圖2具體說明。如圖2所示:
s210,接收隨機(jī)數(shù)獲取指令。
s220,判斷當(dāng)前已被讀取的存儲單元是否為隨機(jī)數(shù)存儲數(shù)組的最后一個(gè)。
具體而言,在每一次接收到隨機(jī)數(shù)獲取指令之后,進(jìn)一步判斷當(dāng)前已被讀取的存儲單元是否為隨機(jī)數(shù)存儲數(shù)組中的最后一個(gè)存儲單元。如果不是隨機(jī)數(shù)存儲數(shù)組中的最后一個(gè)存儲單元,則繼續(xù)讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
s230,如果判斷當(dāng)前已被讀取的存儲單元是隨機(jī)數(shù)存儲數(shù)組的最后一個(gè),初始化隨機(jī)數(shù)存儲數(shù)組,需要重新生成新的隨機(jī)數(shù)存儲數(shù)組。
具體而言,確定當(dāng)前已被讀取的存儲單元是隨機(jī)數(shù)存儲數(shù)組的最后一個(gè),即隨機(jī)數(shù)存儲數(shù)組中的所有存儲單元存儲的隨機(jī)數(shù)都已經(jīng)被讀取過,則需要對隨機(jī)數(shù)存儲數(shù)組進(jìn)行初始化,從而重新生成新的隨機(jī)數(shù)存儲數(shù)組。
在本申請的實(shí)施例中,如果確定當(dāng)前的存儲單元不是隨機(jī)數(shù)存儲數(shù)組的最后一個(gè),則直接根據(jù)隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。
s240,對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,即循環(huán)打亂隨機(jī)數(shù)存儲數(shù)組中的每個(gè)存儲單元的位置。
在本申請的實(shí)施例中,循環(huán)打亂隨機(jī)數(shù)存儲數(shù)組中的每個(gè)存儲單元的位置,從而可以使得存儲單元中存儲的隨機(jī)數(shù)的順序完全隨機(jī),進(jìn)而解決現(xiàn)有技術(shù)中隨機(jī)函數(shù)較大概率出現(xiàn)重復(fù)導(dǎo)致分布不平衡的問題。在本申請的實(shí)施例中,可以采用多種方式對n個(gè)存儲單元存儲的隨機(jī)數(shù)進(jìn)行隨機(jī)調(diào)換,從而達(dá)到隨機(jī)數(shù)的順序完全隨機(jī)的目的,因此并不限于本申請實(shí)施例。
s250,根據(jù)上次獲取的存儲單元的標(biāo)識值,選擇隨機(jī)數(shù)存儲數(shù)組中下一個(gè)存儲單元存儲的數(shù)據(jù)作為當(dāng)前要獲取隨機(jī)數(shù)。
具體地,根據(jù)隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值(即上一次被讀取的存儲單元的標(biāo)識值),根據(jù)當(dāng)前已被讀取的存儲單元的標(biāo)識值讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù),例如可以順序地讀取。
需要說明的是,還可以采用其他的方式從隨機(jī)數(shù)存儲數(shù)組中讀取對應(yīng)的隨機(jī)數(shù),不限于本申請實(shí)施例的順序地從隨機(jī)數(shù)存儲數(shù)組中依次讀取對應(yīng)的隨機(jī)數(shù)。
為了使得本申請中對隨機(jī)數(shù)的生成方法的描述更加的具體化,可以結(jié)合java語言的程序秒數(shù)進(jìn)行說明,具體如下:
首先初始化一個(gè)隨機(jī)數(shù)存儲數(shù)組,定義存儲單元獲取標(biāo)識值和隨機(jī)數(shù)存儲數(shù)組長度。接收隨機(jī)數(shù)指令后,判斷當(dāng)前的存儲單元是否隨機(jī)數(shù)存儲數(shù)組的最后一個(gè),判斷當(dāng)前的存儲單元不是隨機(jī)數(shù)存儲數(shù)組的最后一個(gè)時(shí),需要重新生成隨機(jī)數(shù)存儲數(shù)組,進(jìn)而循環(huán)將隨機(jī)數(shù)存儲數(shù)組中的存儲單元順序打亂,最后根據(jù)上次獲取的存儲單元的標(biāo)識值,選擇隨機(jī)數(shù)存儲數(shù)組中下一個(gè)存儲單元存儲的數(shù)據(jù)作為當(dāng)前要獲取隨機(jī)數(shù)。
需要說明的是,本申請的隨機(jī)數(shù)的生成方法不限于基于java語言實(shí)現(xiàn),可以使用其他計(jì)算機(jī)語言實(shí)現(xiàn)。
本申請實(shí)施例的隨機(jī)數(shù)的生成方法,首先生成包括n個(gè)存儲單元且每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù)的隨機(jī)數(shù)存儲數(shù)組,接著對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,從而可以在接收到隨機(jī)數(shù)獲取指令時(shí),從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡,因此本申請的隨機(jī)數(shù)生成方法具有較好的隨機(jī)性。
為了使得本領(lǐng)域的技術(shù)人員能夠更加清楚地了解本申請中對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排的方法,下面結(jié)合圖3進(jìn)行具體說明。如圖3所示:
s310,根據(jù)當(dāng)前時(shí)間和隨機(jī)函數(shù)生成隨機(jī)值,其中,每個(gè)存儲單元具有標(biāo)識值。該標(biāo) 識值是用于區(qū)分存儲單元的標(biāo)識,在本申請的實(shí)施例中,在初始狀態(tài)(即隨機(jī)混排之前)存儲單元的標(biāo)識值可以與存儲單元中存儲的隨機(jī)數(shù)可以相等。
需要說明的是,在該步驟s310中生成的隨機(jī)值與存儲單元中存儲的隨機(jī)數(shù)的概念并不相同,該步驟生成的隨機(jī)值用于確定待調(diào)換存儲單元的標(biāo)識值。
具體而言,當(dāng)i大于1且小于n時(shí),根據(jù)當(dāng)前時(shí)間和第i-1次隨機(jī)值生成第i次隨機(jī)值;而當(dāng)i等于1時(shí),根據(jù)當(dāng)前時(shí)間生成第i次隨機(jī)值,其中,i為調(diào)換次數(shù)。也就是說,當(dāng)?shù)谝淮紊呻S機(jī)值時(shí),根據(jù)當(dāng)前時(shí)間生成隨機(jī)值,當(dāng)不是第一次生成隨機(jī)值時(shí),根據(jù)當(dāng)前時(shí)間和第i-1次隨機(jī)值生成第i次隨機(jī)值。
在本申請的實(shí)施例中,生成隨機(jī)數(shù)存儲數(shù)組后,每個(gè)存儲單元具有標(biāo)識值,根據(jù)隨機(jī)函數(shù)生成隨機(jī)值,并根據(jù)隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值,從而確定需要調(diào)換的存儲單元。
s320,根據(jù)標(biāo)識值和預(yù)設(shè)調(diào)換規(guī)則將待調(diào)換存儲單元與目標(biāo)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
當(dāng)進(jìn)行第i次調(diào)換時(shí),將第i次隨機(jī)值對應(yīng)的存儲單元與第(n+1-i)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
舉例而言,生成隨機(jī)數(shù)存儲數(shù)組后,每個(gè)存儲單元具有標(biāo)識值,標(biāo)識值能夠區(qū)別不同的存儲單元。當(dāng)i為1時(shí),根據(jù)當(dāng)前時(shí)間生成第1次隨機(jī)值,并根據(jù)第1次隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值,根據(jù)預(yù)設(shè)調(diào)換規(guī)則,把第1次隨機(jī)值對應(yīng)的存儲單元和第n存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換,即將第1次隨機(jī)值對應(yīng)的存儲單元中的隨機(jī)數(shù)存儲于第n存儲單元中,并將第n存儲單元中的隨機(jī)數(shù)存儲于第1次隨機(jī)值對應(yīng)的存儲單元中。當(dāng)i為2時(shí),根據(jù)當(dāng)前時(shí)間和第1次隨機(jī)值生成第2次隨機(jī)值,并根據(jù)第2次隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值,根據(jù)預(yù)設(shè)調(diào)換規(guī)則,把第2次隨機(jī)值對應(yīng)的存儲單元和第n-1存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換,即將第2次隨機(jī)值對應(yīng)的存儲單元中的隨機(jī)數(shù)存儲于第n-1存儲單元中,并將第n-1存儲單元中的隨機(jī)數(shù)存儲于第2次隨機(jī)值對應(yīng)的存儲單元中。以此循環(huán),直到所有隨機(jī)數(shù)存儲數(shù)組中的存儲單元存儲的隨機(jī)數(shù)完成調(diào)換。在上述實(shí)施例中,將第1次調(diào)換計(jì)算的標(biāo)識值的存儲單元與第n存儲單元先進(jìn)行調(diào)換。在本申請的其他實(shí)施例中,也可以從第一存儲單元先開始進(jìn)行調(diào)換。
舉例而言,初始化一個(gè)隨機(jī)數(shù)存儲數(shù)組randarry[]。對隨機(jī)數(shù)存儲數(shù)組中的每個(gè)存儲單元用自然數(shù)賦值。例如,randarry[0]=1,randarry[1]=2…randarry[n-1]=n。循環(huán)打亂隨機(jī)數(shù)存儲數(shù)組中的每個(gè)存儲單元的位置。例如,可以采用每次隨機(jī)數(shù)存儲數(shù)組中的每個(gè)存儲單元存儲的值與倒數(shù)第i個(gè)存儲單元存儲的值交換,i從n-1遞減,例如randarry[1]=2與randarry[n-1]=n替換。
需要說明的是,本申請實(shí)施例的將存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換的方法只是預(yù)設(shè)調(diào)換規(guī)則的一種,即可以根據(jù)實(shí)際需要對預(yù)設(shè)調(diào)換規(guī)則進(jìn)行設(shè)置,通過不同的調(diào)換方法對存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
s330,判斷隨機(jī)數(shù)存儲數(shù)組中的存儲單元是否全部被調(diào)換過。
s340,如果隨機(jī)數(shù)存儲數(shù)組中的存儲單元全部被調(diào)換過,則確定存儲單元中存儲的隨機(jī)數(shù)的順序完全隨機(jī),因此,該隨機(jī)數(shù)存儲數(shù)組可供使用。
具體而言,確定隨機(jī)數(shù)存儲數(shù)組中n個(gè)存儲單元中存儲的隨機(jī)數(shù)已經(jīng)全部進(jìn)行調(diào)換,根據(jù)隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值;根據(jù)當(dāng)前已被讀取的存儲單元的標(biāo)識值讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
需要說明的是,可以采用其他的方式從隨機(jī)數(shù)存儲數(shù)組中讀取對應(yīng)的隨機(jī)數(shù),不限于本申請實(shí)施例的順序地從隨機(jī)數(shù)存儲數(shù)組中依次讀取對應(yīng)的隨機(jī)數(shù)。
本申請實(shí)施例的隨機(jī)數(shù)的生成方法,首先生成包括n個(gè)存儲單元且每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù)的隨機(jī)數(shù)存儲數(shù)組,接著對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,從而可以在接收到隨機(jī)數(shù)獲取指令時(shí),從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡,因此本申請的隨機(jī)數(shù)生成方法具有較好的隨機(jī)性。
與上述實(shí)施例提供的隨機(jī)數(shù)生成方法相對應(yīng),本發(fā)明的一種實(shí)施例還提供一種隨機(jī)數(shù)生成裝置,由于本發(fā)明實(shí)施例提供的隨機(jī)數(shù)生成裝置與上述幾種實(shí)施例提供的隨機(jī)數(shù)生成方法具有相同或相似的技術(shù)特征,因此在前述隨機(jī)數(shù)生成方法的實(shí)施方式也適用于本實(shí)施例提供的隨機(jī)數(shù)生成裝置,在本實(shí)施例中不再詳細(xì)描述。如圖4所示,該隨機(jī)數(shù)的生成裝置可包括:生成模塊110、隨機(jī)混排模塊120、讀取模塊130。
其中,生成模塊110用于生成隨機(jī)數(shù)存儲數(shù)組,其中,隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù),其中,n為正整數(shù)。
在本申請的一個(gè)實(shí)施例中,n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
隨機(jī)混排模塊120用于對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排。
讀取模塊130用于接收隨機(jī)數(shù)獲取指令,并根據(jù)隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。
在本申請的一個(gè)實(shí)施例中,圖5是根據(jù)本申請另一個(gè)實(shí)施例的隨機(jī)數(shù)的生成裝置的結(jié)構(gòu)示意圖,即在如圖4所示的基礎(chǔ)上,如圖5所示,隨機(jī)混排模塊120具體包括標(biāo)識值生成子模塊1201和調(diào)換子模塊1202。具體地,在本申請的一個(gè)實(shí)施例中,標(biāo)識值生成子模塊1201用于根據(jù)隨機(jī)函數(shù)生成隨機(jī)值,并根據(jù)隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值。調(diào)換 子模塊1202用于根據(jù)標(biāo)識值和預(yù)設(shè)調(diào)換規(guī)則將待調(diào)換存儲單元與目標(biāo)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
在本申請的一個(gè)實(shí)施例中,當(dāng)i大于1且小于n時(shí),標(biāo)識值生成子模塊1201根據(jù)當(dāng)前時(shí)間和第i-1次隨機(jī)值生成第i次隨機(jī)值,其中,i為調(diào)換次數(shù)。當(dāng)i等于1時(shí),標(biāo)識值生成子模塊1201根據(jù)當(dāng)前時(shí)間生成第i次隨機(jī)值。
在本申請的一個(gè)實(shí)施例中,預(yù)設(shè)調(diào)換規(guī)則為:當(dāng)進(jìn)行第i次調(diào)換時(shí),將第i次隨機(jī)值對應(yīng)的存儲單元與第(n+1-i)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
在本申請的一個(gè)實(shí)施例中,接收隨機(jī)數(shù)獲取指令后,判斷當(dāng)前的存儲單元是否為隨機(jī)數(shù)存儲數(shù)組的最后一個(gè),如果不是隨機(jī)數(shù)存儲數(shù)組中的最后一個(gè)存儲單元,則繼續(xù)讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。如果是隨機(jī)數(shù)存儲數(shù)組中的最后一個(gè)存儲單元,則需要重新生成新的隨機(jī)數(shù)存儲數(shù)組。
在本申請的一個(gè)實(shí)施例中,圖6是根據(jù)本申請又一個(gè)實(shí)施例的隨機(jī)數(shù)的生成裝置的結(jié)構(gòu)示意圖,在如圖4所示的基礎(chǔ)上,讀取模塊130具體包括:獲取子模塊1301和讀取子模塊1302。
具體地,獲取子模塊1301用于根據(jù)隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值。讀取子模塊1302用于根據(jù)當(dāng)前已被讀取的存儲單元的標(biāo)識值讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
本申請實(shí)施例的隨機(jī)數(shù)生成裝置,首先生成模塊生成包括n個(gè)存儲單元且每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù)的隨機(jī)數(shù)存儲數(shù)組,接著隨機(jī)混排模塊對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行隨機(jī)混排,從而讀取模塊可以在在接收到隨機(jī)數(shù)獲取指令時(shí),從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于隨機(jī)混排模塊對隨機(jī)數(shù)存儲數(shù)組中的存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡。因此本申請的隨機(jī)數(shù)生成裝置具有較好的隨機(jī)性。
圖7是根據(jù)本申請一個(gè)實(shí)施例的隨機(jī)數(shù)的獲取方法的流程圖,本申請實(shí)施例示出的隨機(jī)數(shù)的獲取方法從獲取方面進(jìn)行描述。如圖7所示,該隨機(jī)數(shù)的獲取方法包括以下步驟。
s710,接收隨機(jī)數(shù)獲取指令,并獲取隨機(jī)數(shù)存儲數(shù)組,其中,隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù),且隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置通過隨機(jī)混排確定,其中,n為正整數(shù)。
在本申請的實(shí)施例中,n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
在本申請的實(shí)施例中,n個(gè)存儲單元可以分別存儲1至n個(gè)整數(shù),從而每個(gè)存儲單元存儲的隨機(jī)數(shù)與其他的均不同。
在本申請的另一個(gè)實(shí)施例中,隨機(jī)數(shù)存儲數(shù)組的長度是可以配置的,根據(jù)需要對隨機(jī) 數(shù)存儲數(shù)組的長度提前進(jìn)行設(shè)置。
在本申請的實(shí)施例中,生成隨機(jī)數(shù)存儲數(shù)組后,每個(gè)存儲單元具有標(biāo)識值,根據(jù)隨機(jī)函數(shù)生成隨機(jī)值,并根據(jù)隨機(jī)值生成待調(diào)換存儲單元的標(biāo)識值,從而確定需要調(diào)換的存儲單元。
在本申請的實(shí)施例中,根據(jù)標(biāo)識值和預(yù)設(shè)調(diào)換規(guī)則將待調(diào)換存儲單元與目標(biāo)存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
需要說明的是,本申請實(shí)施例的將存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換的方法只是預(yù)設(shè)調(diào)換規(guī)則的一種,即可以根據(jù)實(shí)際需要對預(yù)設(shè)調(diào)換規(guī)則進(jìn)行設(shè)置,通過不同的調(diào)換方法對存儲單元中的隨機(jī)數(shù)進(jìn)行調(diào)換。
s720,根據(jù)隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中獲取存儲單元存儲的隨機(jī)數(shù)。
具體地,在本申請的一個(gè)具體實(shí)施例中,在接收到隨機(jī)數(shù)獲取指令之后,根據(jù)隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值(即上一次被讀取的存儲單元的標(biāo)識值),根據(jù)當(dāng)前已被讀取的存儲單元的標(biāo)識值讀取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
本申請實(shí)施例的隨機(jī)數(shù)獲取方法,首先接收到隨機(jī)數(shù)獲取指令,接著獲取隨機(jī)數(shù)存儲數(shù)組并通過隨機(jī)混排確定隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置,從而根據(jù)接收到隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡。因此本申請的隨機(jī)數(shù)獲取方法具有較好的隨機(jī)性。
與上述實(shí)施例提供的隨機(jī)數(shù)獲取方法相對應(yīng),本發(fā)明的一種實(shí)施例還提供一種隨機(jī)數(shù)獲取裝置,由于本發(fā)明實(shí)施例提供的隨機(jī)數(shù)獲取裝置與上述幾種實(shí)施例提供的隨機(jī)數(shù)獲取方法具有相同或相似的技術(shù)特征,因此在前述隨機(jī)數(shù)獲取方法的實(shí)施方式也適用于本實(shí)施例提供的隨機(jī)數(shù)獲取裝置,在本實(shí)施例中不再詳細(xì)描述。如圖8所示,該隨機(jī)數(shù)的獲取裝置可包括:接收模塊210、隨機(jī)數(shù)存儲數(shù)組獲取模塊220、隨機(jī)數(shù)獲取模塊230。
其中,接收模塊210用于接收隨機(jī)數(shù)獲取指令。
隨機(jī)數(shù)存儲數(shù)組獲取模塊220用于獲取隨機(jī)數(shù)存儲數(shù)組,其中,隨機(jī)數(shù)存儲數(shù)組包括n個(gè)存儲單元,每個(gè)存儲單元存儲一個(gè)隨機(jī)數(shù),且隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置通過隨機(jī)混排確定,其中,n為正整數(shù)。
在本申請的一個(gè)實(shí)施例中,n個(gè)存儲單元中存儲的隨機(jī)數(shù)均不相同。
隨機(jī)數(shù)獲取模塊230用于根據(jù)隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中獲取存儲單元存儲的隨機(jī)數(shù)。
在本申請的一個(gè)實(shí)施例中,圖9是根據(jù)本申請另一個(gè)實(shí)施例的隨機(jī)數(shù)的獲取裝置的結(jié) 構(gòu)示意圖,即在如圖8所示的基礎(chǔ)上,如圖9所示,隨機(jī)數(shù)獲取模塊230具體包括第一獲取子模塊2301用于根據(jù)隨機(jī)數(shù)獲取指令獲取當(dāng)前已被讀取的存儲單元的標(biāo)識值。第二獲取子模塊2302用于根據(jù)當(dāng)前已被讀取的存儲單元的標(biāo)識值獲取下一個(gè)存儲單元存儲的隨機(jī)數(shù)。
本申請實(shí)施例的隨機(jī)數(shù)獲取裝置,首先接收模塊接收到隨機(jī)數(shù)獲取指令,接著隨機(jī)數(shù)存儲數(shù)組獲取模塊獲取隨機(jī)數(shù)存儲數(shù)組并通過隨機(jī)混排確定隨機(jī)數(shù)存儲數(shù)組中的n個(gè)存儲單元的位置,從而隨機(jī)數(shù)獲取模塊根據(jù)接收到隨機(jī)數(shù)獲取指令從隨機(jī)數(shù)存儲數(shù)組中對應(yīng)的存儲單元中讀取存儲單元存儲的隨機(jī)數(shù)。由于在隨機(jī)數(shù)存儲數(shù)組中對存儲單元進(jìn)行了隨機(jī)混排,從而實(shí)現(xiàn)了在較短的單位時(shí)間內(nèi)多次獲取的隨機(jī)數(shù)重復(fù)率低,且分布均衡。因此本申請的隨機(jī)數(shù)獲取裝置具有較好的隨機(jī)性。
在本申請的描述中,需要理解的是,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個(gè)該特征。在本申請的描述中,“多個(gè)”的含義是至少兩個(gè),例如兩個(gè),三個(gè)等,除非另有明確具體的限定。
在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本申請的至少一個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本申請的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本申請的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應(yīng)當(dāng)理解,本申請的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對數(shù)據(jù)信號實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
此外,在本申請各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中。
上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。盡管上面已經(jīng)示出和描述了本申請的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對本申請的限制,本領(lǐng)域的普通技術(shù)人員在本申請的范圍內(nèi)可以對上述實(shí)施例進(jìn)行變化、修改、替換和變型。