篩子的點數(shù),是隨機的嗎?

打開微信,往一個8人群里發(fā)一個9分錢的拼手氣紅包。那么不管你發(fā)多少次,最后一個搶紅包的人都必定能拿到兩分錢,不信你可以試一試。顯然,在分配紅包金額這件事上,你手上的這臺小型計算機并不是真的隨機。那計算機是如何制造隨機事件的?各種軟件中的隨機都是真的隨機嗎?
在計算機中生成隨機事件的關(guān)鍵是輸出一個隨機數(shù),然后再利用算法就能模擬出各式各樣的隨機事件。你剛才看到的拼手氣紅包背后就有這樣一套算法。其中的隨機數(shù)決定了你最后搶到的金額大小。如何才能得到這樣的隨機數(shù)呢?
1946年,計算機支付馮諾依曼提出了這么一套方案,編寫一個隨機數(shù)生成器,只要輸入任意一個數(shù)字作為種子,計算機就能通過運算生成一個新的隨機數(shù)字。然后再把這個數(shù)字作為輸入值帶入下一輪計算,重復(fù)這個過程,就能生成多個具有統(tǒng)計意義的隨機數(shù)。

直到今天,你的手機電腦仍然在沿用這套隨機數(shù)生成方案,只是把隨機數(shù)生成器升級成了運算效果更好的線性反饋移位寄存器。隨機種子的花樣也更多了。從系統(tǒng)時間、鼠標位置到網(wǎng)絡(luò)速度,硬盤讀寫速度,甚至是你聊天記錄的本地文件都可以被拿來當做隨機數(shù)生成的初始條件,決定最后的隨機結(jié)果。這樣得到的數(shù)字,乍看起來非常隨機。但受到算法的限制,只要取樣范圍夠大,數(shù)字排列早晚會陷入循環(huán)。所以這種方式產(chǎn)生的隨機數(shù)只能叫做偽隨機數(shù)。
以常用的梅森旋轉(zhuǎn)算法為例,它生成隨機數(shù)的循環(huán)周期是2的19937次方。哪怕全世界的計算機一起工作,直到太陽系毀滅的那一天,你也等不到這個循環(huán)。但無論循環(huán)周期有多長,只要知道一開始的隨機種子,再用同一個隨機數(shù)生成器,就能預(yù)測隨機結(jié)果。

比如在1994年,飛利浦的一名員工就弄到了當時的互聯(lián)網(wǎng)巨頭Netscape的服務(wù)器隨機種子,在輸入當前時間加特定字符之后,他就成功解密了對方所有網(wǎng)絡(luò)服務(wù)器的流量信息。
除了能完美預(yù)測偽隨機結(jié)果,你甚至還能主動改變隨機種子的數(shù)值,讓所謂的隨機事件變成百分之百發(fā)生的必然事件。

比如2014年,俄羅斯的一位數(shù)學家就拆解了一臺舊老虎機,獲取了老虎機采用的偽隨機算法,然后設(shè)計了一套程序,只要用手機拍下其他人的****博過程,就能反推計算出老虎機所用的隨機種子。有了這套方法,你只需要找出對應(yīng)時間點拉下拉桿就能歐神附體,百發(fā)百中。最終被丟出****場關(guān)進局子。
說到底,雖然偽隨機數(shù)應(yīng)用廣泛,但它畢竟不是真正的隨機數(shù),想要生成無法預(yù)測的真隨機數(shù),還得從硬件層面想辦法。1999年,英特爾在其i810芯片組上集成了一枚真隨機數(shù)生成器。它通過放大電路產(chǎn)生的熱噪聲,把電路中分子的不規(guī)則熱運動作為數(shù)據(jù)來源,這才讓計算機擁有了自主生成隨機數(shù)的能力。類似的一些專門提供真隨機數(shù)服務(wù)的公司,還會通過收集現(xiàn)實世界中的隨機事件,比如大氣噪音的振幅變化,或者是人工擲骰子轉(zhuǎn)動輪盤的結(jié)果。再把它們轉(zhuǎn)化為二進制或者十進制的數(shù)字,以此獲得更高品質(zhì)的隨機數(shù)資源。通過這些方式獲得的隨機數(shù)幾乎不可能預(yù)測,所以被稱為真隨機數(shù)。他們主要被應(yīng)用于安全或者密碼學領(lǐng)域,用來保護最重要的數(shù)據(jù)信息。
不過如果硬要抬杠,那么這種真隨機數(shù)其實也不夠隨機。因為宏觀現(xiàn)實世界里的一切隨機現(xiàn)象仍然遵循物理學的必然規(guī)律,只是我們這些凡人無法參透罷了。如果拉普拉斯妖真的存在,那么理論上它就能知曉所有原子的分布和動量,算出任何色子的點數(shù),破解一切加密的信息。如果想要實現(xiàn)絕對的隨機,那就只能求助于量子力學了。

隨著技術(shù)發(fā)展,如今的研究人員已經(jīng)能夠通過記錄元素的衰變和放射情況,或者是探測真空中氬原子的噪音,或者統(tǒng)計出糾纏粒子出現(xiàn)的隨機位,設(shè)計出更新型的隨機數(shù)生成器。
在現(xiàn)有科學體系下,這種方式產(chǎn)生的數(shù)字沒有規(guī)律,在物理和哲學層面上都絕對不可預(yù)測,是真正意義上的隨機數(shù)。不過回歸現(xiàn)實,用量子力學生成隨機數(shù),技術(shù)難度實在太高,用芯片自帶的真隨機數(shù)生成器,輸出效率又太低。
你手上這臺計算機現(xiàn)在用的,其實還是尾隨基數(shù)。而且有時候過于隨機,也不一定是件好事兒。如果沒有軟件算法為用戶把控恰到好處的隨機感,而是直接讓這些隨機數(shù)來決定結(jié)果。那么你很可能在聽音樂的時候,連續(xù)三次都聽到同一首曲子。搶紅包的時候,每一次都是手氣最差。玩游戲的時候連抽一百張卡都沒有SSR。說白了,你感受到的隨機根本就不是命運的捉弄,而是算法提前安排好的罷了。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。