談談隨機數


God does NOT play dice with the Universe!

      什么是隨機(random)?字典中給出的定義是無計划,無序和無目的,純靠運氣。隨機是生活中必不可少的成分,比如彩票,游戲,安全,早餐吃什么,這些行為都有一些隨機的成分,但我們能說這些行為都是隨機的嗎?

      比如早餐,吃的人以為是隨機的,做什么吃什么,對廚師而言,可能是精心安排的,就不算隨機行為。游戲也是如此,隨機掉了一件裝備,你如獲至寶,其內部是一個概率算法,如果你掌握了這個算法做了一個外掛,對你而言,這也不是隨機行為了。同理,很多安全密碼的密鑰都是隨機數,比如核武器的按鈕,但難保哪天就被一個天才數學家破解了。

      我的意思是,很難定性判斷某一行為是否是隨機的。隨着我們掌握的信息越來越多,我們的決策算法越來越高效,我們的計算能力越來越強大,進而有能力預測出目前無法預測的隨機行為。這就留下了一個有意思的問題,是否真的存在上帝,上帝是否擲骰子(隨機行為),在宇宙大爆炸前,上帝是否已經設計好宇宙的發展?而我們的人生,是否早已寫好,只是看不見而已呢?當然,目前一切還不得而知,萬一宇宙的產生只是一個意外呢

2

1

      隨機並不絕對,但生活中又要用到隨機,歷史上有很多隨機數生成器(random number generator,簡稱RNG),比如骰子。這方面,我們的祖先甚至寫了一本《易經》,可以理解為如何生成隨機數並破解隨機行為的百科全書。

      根據不同的方法,大概分為兩種方式:T(rue)RNG和P(seudo)RNG。兩者有什么區別呢?

TRNG

      通過一些物理現象來產生隨機數,比如大氣層的噪音,元素的衰變和放射,擲骰子等,因為這些行為受到多個自然因素的影響,過程不可預測,所以主觀上覺得比較安全。所以,當我們對安全性和經濟性上有較高要求時,往往需要采用這類方式產生的隨機數,比如彩票,人類不會放心的把這件事情交給機器來處理,一定要有儀式感,讓它看上去是隨機的。

      然而,公正的行為不一定會產生公平的結果。相比而言,TRNG更大的優勢在於不可預測性,但結果上並不一定平均。

PRNG

      偽隨機數通過算法產生,計算機因此可以模擬隨機行為。但因為有公式,所以只要參數確定,也就是隨機的種子,得到的隨機結果一定是可重復的。比如如下的通隨機數生成公式,給出種子1,就可以得到一系列的隨機數。

3

4

      這樣經過算法設計出來的隨機數分布很均勻,完美的不像人類或自然的產物。下面是在JS,產生1000000個隨機數,區間在(0,1000):

5

      我在Matlab中也做了同樣的實驗,分布也很平均。可見,目前機器生成的隨機數,從結果來看確實很隨機。比如隨機生成灰度圖和對應的直方圖統計,有沒有小時候電視沒信號的視覺效果?

隨機

萬物看似隨機,卻都有其統計的宿命

正態分布

      完美的隨機缺少美感。比如我們玩斗地主,洗牌的原則就是做到盡可能的隨機,比如同一個花色的不能連續,數字不能連,甚至不能有規律,簡單說,要求越嚴格越隨機。可是,如果隨機做到絕對的公平,游戲的趣味性則會大大降低。

      事物發展的規律也是如此,所謂的能就是勢差,只有不平等才能產生差,進而有了發展的動力。大自然在宏觀上達成平衡,但在個體之間是不平等的。

      所以,我們需要人工干預隨機行為,讓這種隨機變得不平等。如何讓隨機行為更符合客觀規律呢,就是統計的意義。比如統計人的身高,如果樣本夠多,比如一個學校,一個城市,一個國家,整個世界,就會發現這樣的一個分布規律:

4

      這就是正態分布,有興趣的可以讀一下之前寫的關於斐波那契數列的文章,因為它們里面都體現了黃金分割。如何讓機器模擬正態分布的隨機數生成?Box–Muller transform提供了公式,網上也有現成的代碼,下圖是JS上實現的正態分布的隨機數效果:

6

      如下是正態分布的灰度圖和直方圖:

正態分布

噪聲

      通過公式,我們可以創建符合規律(公式)的隨機數,數學的美總是晦澀而難以發現的。而庄子雲:“天地有大美而不言”。

      不是在說隨機數,跟美有什么關系?且看下圖,沙丘的形成,過程是隨機的,但卻給人一種美,這樣的場景有很多,比如地形,火焰,雨雪天氣,木質紋路等,都有各自的美,當我們感嘆大自然的鬼斧神工,自然會有疑問:如何通過隨機算法來模擬它們?

fig05-01

      這就是噪聲:在三維空間提供高效的,可實現,可重復的偽隨機信號。當然,上面的隨機算法也能制造出噪聲,但比較尖銳,生硬不自然,我們成為White Noise,比如電視上的雪花屏。學者們根據效率、用途、自然程度(即效果好壞)等方面的衡量,提出了許多希望用程序模擬自然噪聲的方法。例如,Perlin噪聲被大量用於雲朵、火焰和地形等自然環境的模擬;Simplex噪聲在其基礎上進行了改進,提到了效率和效果;而Worley噪聲被提出用於模擬一些多孔結構,例如紙張、木紋等。---摘自candycat的博文《談談噪聲》

10

      這里就不闡述噪聲紋理的算法和思路了,這塊內容也很多,個人的理解也很淺薄。如上圖,是Perlin噪聲的4次分形疊加產生的灰度圖,添加顏色表,模擬地形的一個過程。機器的特點是不易出錯,可以完美的執行任務,通過噪聲,可以在可控范圍內隨機的創造出不完美,反而更有質感,真實感。

6

      當機器的能力越來越強大,也許,相比機器,人類的一個優勢就是會犯錯,真是這種隨機的錯誤,讓我們的生活更真實。生命的演化也是如此,基因的突變是隨機的,多數是失敗的,但正是那些不經意的成功,不斷推動生命的發展和演變。

      Impossible is nothing~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM