車雅玲 范英浩 朱鵬熹
?
不重復隨機數(shù)的生成算法及應用解析
車雅玲 范英浩 朱鵬熹
吉林大學電子科學與工程學院,吉林 長春 130012
不重復隨機數(shù)是一種在許多領(lǐng)域有著重要的應用空間和應用前景的重要工具,可以為相關(guān)軟件等提供基礎(chǔ),促進程序與軟件的編寫質(zhì)量。
算法;過濾;隨機數(shù)問題;過濾
在對隨機數(shù)研究的過程中,相關(guān)工作研究人員在很大程度上并沒有找到合適的辦法來有效解決這一問題,一些專門研究隨機數(shù)應用方面的文章也給出了一些比較合理的解決辦法,但是在試選、應用效果方面存在一些問題。這些研究條件不是隨機數(shù)應該完成的算法,在更多的實際應用過程中,還會存在效果方面的偏差。
在軟件編程和程序語言中,不重復隨機數(shù)問題可能會給當前的問題帶來很多困擾,要按照實際生成條件的不同來進行區(qū)分,將不重復隨機數(shù)有效劃分為動態(tài)和靜態(tài)兩種方式,在這兩個方面中會出現(xiàn)很多問題。在動態(tài)條件下,不重復隨機數(shù)在生成方面也面臨著一些問題,動態(tài)條件指的是在生成新的隨機數(shù)時,生成過程不僅受到已生成隨機數(shù)的制約,還會受到一些其他方面隨機數(shù)的相關(guān)制約,在程序運行過程中隨機數(shù)是在動態(tài)改變的,具體可以描述為從取值范圍內(nèi)的R中隨機抽取m個不重復的數(shù),用a1,a2,……am這樣一個數(shù)列來表示,在這其中生成的第i個隨機數(shù)必須要滿足條件T,這里的T與前面的隨機數(shù)有相關(guān)的動態(tài)條件。
2.1 靜態(tài)條件下隨機數(shù)的生成算法
靜態(tài)條件下的不重復隨機數(shù)具備傳統(tǒng)算法中的試選法,其基本原理包括有效利用隨機函數(shù)來指定生成隨機算法,當所生成的另外一個隨機數(shù)進入候選范圍時,便表示會放棄此數(shù),在經(jīng)過一定的方式來重新生成,直到在這個過程中顯示出N個不重復的隨機數(shù)為止。這種算法和想法很容易實現(xiàn),但是在試選的過程中會造成死循環(huán)和運算時間長短等問題,在取數(shù)的小范圍內(nèi)會造成不重復的隨機數(shù)選擇,當出現(xiàn)這一問題的時候,試選法在存在問題缺陷的時候并沒有將已經(jīng)選擇是數(shù)據(jù)從備選數(shù)據(jù)中過濾出去。在上述的算法中,由于每次循環(huán)都要去掉數(shù)組B中的一個分量,這種方法在程序中被稱作是“去尾法”,在對算法進行分析的時候可以發(fā)現(xiàn),除了對循環(huán)程序的判斷條件外算法中使用的全部都是較為簡單的語句,這些語句在賦值方面有一定作用,但是在程序算法的復雜度方面卻偏低,可以使算法達到最佳性能,這里的不重復隨機數(shù)指的并不是經(jīng)常使用的隨機數(shù)。
2.2 動態(tài)條件下的不重復隨機數(shù)的生成算法
動態(tài)狀態(tài)下的不重復隨機數(shù)在需主要是通過選出即過濾的形式,實現(xiàn)對不重復隨機數(shù)的選取,在實際的選取過程中,每生成一個不重復隨機數(shù),便將其進行過濾,使得這一隨機數(shù)選取的過程呈現(xiàn)動態(tài)形式,并一直持續(xù)到得到所需的隨機數(shù)。動態(tài)算法是對靜態(tài)條件的 “去尾”的進一步強化,較比靜態(tài)不重復隨機數(shù)生成算法,可以有效的提高不重復隨機數(shù)的過濾水平。如果結(jié)合不重復隨機數(shù)的實際情況,可以將靜態(tài)算法視為動態(tài)算法的一個個別例子。
在實際的不重復隨機數(shù)的生成時,需要對多個隨機數(shù)進行過濾和填充,在實際的過濾過程中,主要是采用:標注、填充、去尾這一方式,通過這一方式可以有效的提高運算的效率,促使動態(tài)條件下的不重復隨機數(shù)能夠得到有效的使用,為相關(guān)軟件設(shè)計和實際問題處理提供有效的手段和措施。
2.3 篩選法
篩選法是生成不重復隨機數(shù)的重要手段,通過篩選法可以有效的提高不重復隨機數(shù)的生成效率,促使所生成的不重復隨機數(shù)更加符合相關(guān)問題的使用。篩選法的具體的應用是:根據(jù)所需的不重復隨機數(shù)的情況,進行區(qū)間的設(shè)計,這一區(qū)間內(nèi)的起始數(shù)必須要比終止數(shù)要小。在這一區(qū)間內(nèi)進行數(shù)組的載入,并使用Random進行隨機下標的生成,并在區(qū)間內(nèi)對應的數(shù)值進行返回,如果對應可以對其進行刪除,促使數(shù)組最后能夠變?yōu)榭铡Mㄟ^篩選法可以有效的對重復的進行控制,為軟件設(shè)計和實際問題處理提供基礎(chǔ)。
在實際的生產(chǎn)生活中,不重復隨機數(shù)具有大量的應用空間,廣泛的應用到人們的生活中,涉及到的領(lǐng)域也很廣,隨機數(shù)可以應用到相關(guān)驗證中,可以有效的提高計算機及其使用的相關(guān)安全,有效的規(guī)避病毒與木馬對計算機的影響,有效的提高計算機及其相關(guān)軟件的安全系數(shù)。不重復隨機數(shù)。
不重復隨機數(shù)可以應用到學校的題庫選題中,能夠有效的提高選題的可靠性與準確性,避免重復考題的出現(xiàn),促使考題能夠滿足知識點和知識結(jié)構(gòu)的補充,從而形成一套完備的考試試卷。主要是通過軟件對其進行設(shè)置,進行編程,對不同的知識點和考核內(nèi)容進行編號,對所要保留的內(nèi)容進行保存,從而有效的規(guī)避考試知識點重復的問題,提高學??荚嚦鲱}的可靠性與有效性。
不重復隨機數(shù)的生成在實際的軟件設(shè)計和實際問題處理中,具有十分重要的應用能力,可以有效的提高軟件設(shè)計的質(zhì)量,提高實際問題的解決效率。其中,不重復隨機數(shù)主要可以通過靜態(tài)條件下隨機數(shù)的生成算法、動態(tài)條件下的不重復隨機數(shù)的生成算法與篩選法生成,從而形成隨機數(shù)的生產(chǎn)和存儲,并對所需求的隨機數(shù)進行保存。不重復隨機數(shù)的應用,可以有效的提高實際問題的解決能力,提高軟件的設(shè)計質(zhì)量。
[1]劉倩,范安東.一種改進的偽隨機數(shù)生成算法及隨機性分析[J].四川理工學院學報(自然科學版),2012(06): 49-53.
TP311.1
A
1009-6434(2016)01-0032-01