陳華賢
關鍵詞:隨機數;函數;進制轉換;無理數;超大整數
1引言
如今,各行業尤其是計算機領域對隨機數的需求量很大,因此,迫切需要一種高效和低成本產生隨機數的方法。但是,在傳統的科學觀點中,在計算機上是不可能產生真正的隨機數的。美國著名計算機學家馮·諾依曼曾經說過:“任何人考慮用數學的方法產生隨機數肯定是不合情理的”。能否找到一種產生隨機數序列的數學方法,本文認為是可以的。事實上,隨機數并不難獲得。
2產生隨機數的數學方法
2.1靈感來源
本數學方法的靈感來源于無理數。比如,針對無理數π,數學家對它進行了深入研究,即π是無限不循環小數,利用泰勒級數或者其他計算方法可以將其無限地計算下去。據悉,現在科學家已將π計算到小數點后萬億位。而π數位上的數字擁有的特點是:(1)無限性,即可以無限計算下去;(2)無周期性,沒有周期不會出現循環;(3)隨機性和不可預測性,數位上的數字沒有特別的規律,而且相互獨立,無法通過已知數位上的數字推測未知數位上的數字;(4)均勻性,每個數位上的數字(0~9)出現的概率均等,即每個數字出現的概率都接近10%;(5)可復現性,即π數位上的數字通過重復計算較易重現,對于加密算法而言,該特性使它不用占據大量的存儲空間,在加密或者解密環節把數字重新計算出來即可,可以不提前儲存。
從上文對無理數π的分析可見,π數位上的數字符合真隨機數的特點,因此,可以把它們看成是隨機數。同時,可以大膽推斷:存在一類無理數,其數位上的數字也具有類似仃的特征,即無限性、無周期性、隨機性、均勻性和可復現性。當然,基于此可以再引申:存在一類有理數,其周期很長,有成百上千位,在它們的某個周期內,數位上的數字會隨機出現,即可以將它們看成是隨機數。
2.2產生隨機數具體的數學方法
既然無理數和有理數都可以作為隨機數的來源,那么可以從求解無理數π的方法中得到啟示。求解π的方法很多,最直接的方式就是用泰勒級數進行求值計算。而通過觀察泰勒級數的形式,暫且不論它的數學本質,單就運算形式而言,可以發現它其實就是初等函數之間的加減乘除運算。這些基本數學運算和初等函數的計算方法在現代計算機上已經能夠實現。另外,從獲取隨機數的角度來看,并不需要小數點,因此,π的小數點可以去掉。而π去掉小數點后,會變成一個無限長的超大整數。在此,把位數超過一百位的十進制數字稱為超大整數,簡稱超大數。對于某個通過函數隨機運算確定的超大數而言,和仃類似,它的數位上的數字出現是沒有規律的,也無法預測,即無法通過已知數位上的數字推測未知數位上的數字。受此啟發,可以利用現成的大數運算庫,用隨機設計的函數去計算超大數,進而得到隨機數數字序列。
本數學方法的核心就是通過設計函數去計算超大整數,然后把超大整數數位上的數字看成隨機數,從而達到本文的目的。同時,可以對計算出來的超大數進行進制轉換,然后得到指定范圍內的隨機數。關于設計函數和進制轉換的細節,下文將進一步討論。
2.2.1設計初等函數求解超大數
顯然初等函數有無限種形式且具有隨機性,而自變量的值也不盡相同,存在差異。因此,有理由相信通過隨機設計的函數計算出來的數值也具有隨機性。這就是本文方法能夠獲取隨機數的本質。在具體的上機實驗中,采用微軟.net的大數運算庫。利用該運算庫,結合本文設計的函數(包括多元函數),可以計算出位數高達百萬位的超大整數。從實驗結果來看,以此計算出來的超大數,其數位上的數字具有無限性、無周期性、隨機性、均勻性和可復現性等特征。這些特征符合上文分析無理數π時所總結的性質。同時,在上機實驗中獲得的隨機數樣本能夠通過相關統計學軟件的測試。
可以看出,以上函數都是常見的初等函數的復合函數,它們是隨機設計的。而通過隨機設計的函數來計算超大數,并把超大數數位上的數字當成隨機數來源的方法,簡單便利,實現門檻低,這是本數學方法的創新之處。值得注意的是,在需要多個密鑰的密碼學應用場景下,函數可以設計成多元的,每個自變量對應一個密鑰。多元函數體現了本文方法的靈活性。
2.2.2利用函數矩陣來計算超大數
如圖1所示,由函數構成的矩陣簡稱函數矩陣,顯然它與2.2.1節討論的初等函數一樣,具有無限種形式。它的橫向為初等函數的加減乘除;縱向是對橫向計算結果1至結果n的字符串連接,即對橫向計算出來的超大數字直接進行首尾相連。在此,用符號“&”表示字符串連接運算。之所以用字符串連接,是為了提高求值效率,同時加強隨機性。另外,如果把該方法應用到密碼學領域,即對數據進行加密,字符串連接運算也可以增強密碼安全性,使加密算法更難被破解[2]。
函數矩陣的形式本身具有隨機性,也可以采用多個自變量(即多元函數矩陣)來快速計算超大整數。建議利用隨機化的系數初始化函數矩陣,然后將數字代入函數矩陣求值即可。如何設計函數矩陣,并使性能最優化還需要進一步討論。
下文舉例說明用函數矩陣計算超大數,進而獲取隨機數的方法。假如是一元函數矩陣,那么可以設計函數矩陣如下:
2.2.3進制轉換
在以上兩個例子中,所得隨機數集合都是0~9范圍內的整數,如何才能得到指定范圍內的隨機數集合?比如,要得到O~p的隨機數集合,設p為大于等于1的正整數。其實處理方式也很簡單,對計算出來的超大數進行進制轉換即可。把超大數轉換為二進制,因為二進制數字中數位上只能是0~1的數字,所以可得0和1的隨機數集合:把超大數轉換為十六進制,而十六進制數字數位上的數字范圍是0~15,因此,可以得到0~15的隨機數集合。總之,把超大數轉換為p+l進制后,可以得到0~p的隨機數集合。
需要注意的是,p需要遠小于超大數才能使進制轉換后的隨機數集合更加均勻,這是基本的邏輯推理,下文將繼續討論均勻性。同一個超大數可以轉換為不同進制,得到不同的隨機數集合。
表3是采用上文設計的函數矩陣(x)循環計算超大數,并依次對各超大數進行進制轉換后,獲得隨機數集合中各數字出現的次數統計表。其中,設進制數p+1=2,即p為1。
設進制數p+1=16,即p為15時,數字出現次數統計如表4所列。
從上機實驗結果來看,若采用的數學函數和進制數相同,則生成的隨機數數量越多,隨機數分布的概率將更加均勻。這其實就是均勻性,也是本數學方法生成的隨機數的特性之一。
以上結論有實驗數據支持,下文采用的仍然是函數矩陣(x),當進制數為2時,各數量級的隨機數樣本的數字出現情況統計如表5、表6、表7所列,可見實驗得到的隨機數確實是很均勻的。
在實驗中,可以觀察到變異系數c(變異系數c=(標準偏差SD/平均值Mean)×100%)的值隨著隨機數數量級的增加而減少,如下表8所列。
從理論上說,進制轉換并沒有限制進制數的上限,滿足進制數遠小于當前的超大數即可,而超大數本身也沒有大小限制。因此,利用本文方法生成的隨機數并無大小限制。這種特性也是傳統隨機數算法所沒有的,屬于本文方法的創新點之一。總之,進制轉換解決了如何均勻地獲取指定范圍內隨機數的問題。
2.3所得隨機數樣本的統計檢驗
采用IBM公司的SPSS軟件對隨機數樣本進行統計檢驗,如圖2、圖3所示。SPSS為IBM公司推出的一系列用于統計學分析運算、數據挖掘、預測分析和決策支持任務的軟件產品及相關服務的總稱,有Windows和Mac OS X等版本。實驗所用版本是28.0.1.1(15),對本數學方法生成的某個隨機數樣本進行檢測,結果符合隨機性假設,這也是本數學方法的技術佐證。在一般場合,也可以通過隨機數校驗算法對獲得的隨機數進行檢驗,驗證其隨機性。
3對本數學方法的計算機算法描述
因為本數學方法的靈感來源于無理數,所以把實現它的計算機算法命名為無理數隨機數生成算法。本算法很靈活.可以采用不同的函數來計算超大數(圖4),因此,擁有無限多個實例。要注意的是,下文算法實例中用到了大數運算庫Biglnteger,其中BigInteger.Pow方法表示對大數進行冪函數運算。以下是某個實例的具體算法描述:省略流程圖。但是要注意,可以計算超大數的函數很多,getBigNumFun只是其中一種,而這樣的函數也不難設計。從數學形式上看,沒必要用到微積分,但微積分學中的泰勒級數理論給了我們很重要的啟示。過程myChangeFormat(圖5)表示對計算出來的超大數進行進制轉換,并把進制轉換后的該超大數各數位上的數字存儲到數據列表dList中,從而得到一定范圍內的隨機數集合。它們的偽代碼如下:
4本數學方法的優缺點分析
與傳統的隨機數算法相比,本文方法具備的主要優勢是:(1)無周期性,把生成超大數的函數設計成非周期性的即可,而這樣的函數有很多,有很大的選擇空間;(2)無限性,只要計算和存儲資源足夠,在生成超大數的函數理論上可以無限計算下去,因此,可以產生無限多數量的隨機數;(3)可復現性,本文方法靈活應用數學函數,函數形式不唯一,而且只要確定函數形式和自變量,那么計算出來的超大數就是確定的,因此,本文方法獲取的隨機數很容易復現,不需要物理采集和占用存儲,簡便且效率高;(4)隨機數無大小限制,因為超大數在理論上是無大小限制的,因此,進制數也應該沒有大小限制,所以,只要計算和存儲資源允許,我們能夠得到任意數量和任意大小的隨機數集合;(5)靈活性強、實現簡便、代價低,本數學方法完全可以在民用計算機上實現,是一種低門檻、低成本,大批量獲得隨機數的新方式,又因為任何人都可以定制生成隨機數的函數,因此,它具有很強的靈活性;(6)隨機性和均勻性都很強,函數形式和自變量的隨機性造就了超大數的隨機性,而既然是隨機的,那么各數字的出現概率也應該相等,即均勻性。
本數學方法的不足之處在于理論上需要繼續完善,主要是隨機性和均勻性的嚴格數學證明。在實際應用中,可以增加隨機性和均勻性的檢驗環節,對本數學方法產生的隨機數集合進行檢驗,從而在一定程度上彌補理論上的不足。
5本數學方法的應用展望
5.1本數學方法可以改良一次一密算法
因為本文方法可以生成概率均勻的隨機數集合,所以可以改良當前安全性高但實用性不強的一次一密算法。一次一密算法是具備完善保密性、安全性較高的對稱加密算法。一個加密方案是完善保密的,即使攻擊者擁有無限計算資源,也不可能從密文中分析出關于明文的任何信息。此前,如果采用一次一密算法對1GB的文件進行加密,則生成和管理1GB大小的密鑰,造成存儲空間的極大浪費。而如果采用本數學方法,保存生成超大數的函數和相關變量即可,在需要加密或解密時,再計算出隨機數,能節省50%左右的存儲空間。因此,本數學方法最直接的應用在于改良一次一密算法。當然,概率分布均勻的隨機數集合的應用還很多,可以逐步發掘它的潛力。
5.2本數學方法可以檢驗量子計算機的計算正確性
目前,已有研究者用計算π的超精密值(通常是小數點后萬億位以上)來驗證計算機的準確性。如上文所述,π去掉小數點后其實就是一個超大數,而本文方法可以通過設計某個函數(或函數矩陣)來計算超大數,因此,可以用該方式去檢驗量子計算機的正確性。因為擁有大量位數(如萬萬億位十進制形式)的超大數不容易獲得,需要通過超級計算機計算得到。而顯然只要對比量子計算機的計算結果與傳統超級計算機的計算結果是否一致,就能檢驗量子計算機的計算正確性。本數學方法生成的超大數沒有大小限制且具有可復現性,因此它為相關檢驗工作提供了便利,是一種比較新的思路。
5.3本數學方法可以抵御量子計算機的威脅
因為量子計算機的強大計算能力,傳統的非對稱加密算法(如RSA)已經可以在較短時間內被它破解,因此,迫切需要一種新的加密機制保護關鍵數據。一次一密算法是傳統的對稱加密算法,具有完善保密性,可以抵御量子計算機的攻擊。上文提道,本數學方法可以大大改良一次一密算法,因此,未來可能會廣泛采用改良后的一次一密算法對關鍵數據進行加密,因為它的安全性較高。
5.4對本數學方法的總結
總之,本數學方法的技術可行性較強、應用前景廣闊,需要多加研究和討論,使其不斷完善。本文方法既有理論支撐,也有技術支持,偏重技術實現。本文方法可以直接應用于密碼學,能以較低的代價換取較高的安全性方面的收益,不失為一種新的加密方案,尤其在民用和商用等非關鍵數據的加密方面完全可以勝任。