專利名稱:一種通過系統(tǒng)隨機數(shù)洗牌的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通過系統(tǒng)隨機數(shù)打亂一副牌的排序方法,特別涉及一種通過加密 產(chǎn)生不重復(fù)的隨機數(shù)來將一副排序好的牌進行洗牌的方法。
背景技術(shù):
目前通過計算機語言來產(chǎn)生系統(tǒng)隨機數(shù)的方法主要有以下兩種1、通過“偽隨機數(shù)生成器”來生成隨機數(shù)。這種方法實現(xiàn)簡單,主要是通過設(shè)定隨機數(shù)種子來獲得偽隨機數(shù)。但獲得的隨機 數(shù)精度不高,不夠隨機,容易產(chǎn)生大量的重復(fù)的隨機數(shù)。這樣所得到的隨機數(shù)只能滿足所 要求的隨機數(shù)不是很多,而且允許重復(fù)的情況。這種應(yīng)用在對隨機數(shù)要求不高的項目中被 廣泛采用。而在需要大量的隨機數(shù),而且并發(fā)量大的項目中,會因隨機數(shù)不能加密,不夠隨 機,重復(fù)數(shù)多而被放棄使用。2、通過“加密隨機數(shù)生成器”來生成隨機數(shù)。這種方法使用加密服務(wù)提供程序(CSP)來實現(xiàn)加密隨機數(shù)生成器(RNG)。通過加 密手段產(chǎn)生的隨機數(shù)精度高,安全,重復(fù)數(shù)少,而且足夠的隨機。但它的缺點是只能產(chǎn)生0 到256之間的隨機數(shù)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種加密產(chǎn)生不重復(fù)的隨機數(shù)來將一副排序 好的牌進行洗牌的方法。一張撲克牌對象通常有兩個屬性,即牌的花色和牌的值。一副完 整的撲克牌有54張,在生成這54張牌對象時,所采用的方法是利用計算機語言中的循環(huán)技 術(shù)來順序新建54個牌對象,并將其存儲在對象數(shù)組中,然后打亂數(shù)組中的牌的次序,發(fā)放 給用戶。本發(fā)明所述的一種通過系統(tǒng)隨機數(shù)洗牌的方法,該方法至少包括如下的步驟步驟1 確定一張撲克牌對象,該對象包括牌的花色和牌的值這兩個屬性。步驟2 利用循環(huán)技術(shù)順序產(chǎn)生54張撲克牌對象。步驟3 利用加密隨機數(shù)生成器生成54個隨機數(shù),然后存儲到數(shù)組中。步驟4 新建一個集合對象,該對象擁有泛型鍵值對(key/value)和按鍵(key)排 序(sort)順序輸出的特征。步驟5 將隨機數(shù)數(shù)組中的元素作為集合的鍵(key),將54張順序的牌對象作為集 合的值(value),順序添加(add)到集合中。步驟6 運用集合的按鍵排序?qū)傩詫⒓现写鎯Φ囊噪S機數(shù)作為鍵(key),以撲克 牌作為值(value)的牌對象順序取出,存儲到牌對象的數(shù)組中,洗牌完成。本發(fā)明涉及的一種通過系統(tǒng)隨機數(shù)洗牌的方法,使得將一副按順序排序的牌進行 了洗牌操作,高效的利用了安全的隨機數(shù)和集合對象的屬性。
具體實施例方式本發(fā)明的主要步驟如下步驟1 新建兩個枚舉類型,分別為牌的花色,包括黑、紅、花、片四個屬性,和牌的 值,包括 2-10 和 J、Q、K、A、SmallKing, BigKing 這 15 個值。步驟2 新建一張撲克牌類,該類對象包括牌的花色和牌的值這兩個屬性;利用二 層循環(huán)新建54個牌的對象,其中每個牌對象都有兩個屬性,一個為牌的花色枚舉值,一個 為牌值枚舉值。步驟3 利用加密隨機數(shù)生成器生成54個隨機數(shù),然后存儲到數(shù)組中;生成時要判 斷是否和歷史生成的隨機數(shù)重復(fù),有重復(fù)則重新生成。步驟4 新建一個泛型的集合對象,該對象擁有排序順序輸出的方法。步驟5 利用循環(huán)機制將隨機數(shù)作為泛型集合對象的鍵,將54張牌對象作為泛型 集合的值添加到集合中。步驟6 調(diào)用集合的按鍵排序方法,順序輸出54張牌。洗牌完成。上述的技術(shù)方案實施時將一副按順序排序的牌進行了洗牌操作,高效的利用了安 全的隨機數(shù)和集合對象的屬性。最后所應(yīng)說明的是,以上實施例僅用以說明而并非限制本發(fā)明所描述的技術(shù)方 案;因此,盡管本說明書參照上述的實施例對本發(fā)明已進行了詳細的說明,但是,本領(lǐng)域的 普通技術(shù)人員應(yīng)當理解,仍然可以對本發(fā)明進行修改或者等同地替換;而一切不脫離本發(fā) 明的精神和范圍的技術(shù)方案及其改進,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當中。
權(quán)利要求
一種通過系統(tǒng)隨機數(shù)洗牌的方法,其特征在于該方法至少包括如下的步驟步驟1確定一張撲克牌對象,該對象包括牌的花色和牌的值這兩個屬性。步驟2利用循環(huán)技術(shù)順序產(chǎn)生54張撲克牌對象。步驟3利用加密隨機數(shù)生成器生成54個隨機數(shù),然后存儲到數(shù)組中。步驟4新建一個集合對象,該對象擁有泛型鍵值對和按鍵排序順序輸出的特征。步驟5將隨機數(shù)數(shù)組中的元素作為集合的鍵,將54張順序的牌對象作為集合的值,順序添加到集合中。步驟6運用集合的按鍵排序?qū)傩詫⒓现写鎯Φ囊噪S機數(shù)作為鍵,以撲克牌作為值的牌對象順序取出,存儲到牌對象的數(shù)組中,洗牌完成。
全文摘要
一種通過系統(tǒng)隨機數(shù)洗牌的方法,首先確定一張撲克牌對象,該對象包括牌的花色和牌的值這兩個屬性;然后利用循環(huán)技術(shù)順序產(chǎn)生54張撲克牌對象;利用加密隨機數(shù)生成器生成54個隨機數(shù),然后存儲到數(shù)組中;新建一個集合對象,該對象擁有泛型鍵值對和按鍵排序順序輸出的特征;將隨機數(shù)數(shù)組中的元素作為集合的鍵,將54張順序的牌對象作為集合的值,順序添加到集合中;最后運用集合的按鍵排序?qū)傩詫⒓现写鎯Φ囊噪S機數(shù)作為鍵,以撲克牌作為值的牌對象順序取出,存儲到牌對象的數(shù)組中,洗牌完成。本發(fā)明使得將一副按順序排序的牌進行了洗牌操作,高效的利用了安全的隨機數(shù)和集合對象的屬性。
文檔編號G06F19/00GK101901296SQ20091008557
公開日2010年12月1日 申請日期2009年5月25日 優(yōu)先權(quán)日2009年5月25日
發(fā)明者劉立軍, 張守文, 王磊, 陶勇勝 申請人:灰熊(北京)科技有限公司