什么是隨機(random)?字典中給出的定義是無計劃,無序和無目的,純靠運氣。隨機是生活中必不可少的成分,比如彩票,游戲,安全,早餐吃什么,這些行為都有一些隨機的成分,但我們能說這些行為都是隨機的嗎?
比如早餐,吃的人以為是隨機的,做什么吃什么,對廚師而言,可能是精心安排的,就不算隨機行為。游戲也是如此,隨機掉了一件裝備,你如獲至寶,其內(nèi)部是一個概率算法,如果你掌握了這個算法做了一個外掛,對你而言,這也不是隨機行為了。同理,很多安全密碼的密鑰都是隨機數(shù),比如核武器的按鈕,但難保哪天就被一個天才數(shù)學(xué)家破解了。
我的意思是,很難定性判斷某一行為是否是隨機的。隨著我們掌握的信息越來越多,我們的決策算法越來越高效,我們的計算能力越來越強大,進而有能力預(yù)測出目前無法預(yù)測的隨機行為。這就留下了一個有意思的問題,是否真的存在上帝,上帝是否擲骰子(隨機行為),在宇宙大爆炸前,上帝是否已經(jīng)設(shè)計好宇宙的發(fā)展?而我們的人生,是否早已寫好,只是看不見而已呢?當(dāng)然,目前一切還不得而知,萬一宇宙的產(chǎn)生只是一個意外呢?
隨機并不絕對,但生活中又要用到隨機,歷史上有很多隨機數(shù)生成器(random number generator,簡稱RNG),比如骰子。這方面,我們的祖先甚至寫了一本《易經(jīng)》,可以理解為如何生成隨機數(shù)并破解隨機行為的百科全書。
根據(jù)不同的方法,大概分為兩種方式:T(rue)RNG和P(seudo)RNG。兩者有什么區(qū)別呢?
TRNG
通過一些物理現(xiàn)象來產(chǎn)生隨機數(shù),比如大氣層的噪音,元素的衰變和放射,擲骰子等,因為這些行為受到多個自然因素的影響,過程不可預(yù)測,所以主觀上覺得比較安全。所以,當(dāng)我們對安全性和經(jīng)濟性上有較高要求時,往往需要采用這類方式產(chǎn)生的隨機數(shù),比如彩票,人類不會放心的把這件事情交給機器來處理,一定要有儀式感,讓它看上去是隨機的。
然而,公正的行為不一定會產(chǎn)生公平的結(jié)果。相比而言,TRNG更大的優(yōu)勢在于不可預(yù)測性,但結(jié)果上并不一定平均。
PRNG
偽隨機數(shù)通過算法產(chǎn)生,計算機因此可以模擬隨機行為。但因為有公式,所以只要參數(shù)確定,也就是隨機的種子,得到的隨機結(jié)果一定是可重復(fù)的。比如如下的通隨機數(shù)生成公式,給出種子1,就可以得到一系列的隨機數(shù)。