有什麽事是計算機做不到的?產生真隨機數,電腦不會擲骰子
來源:科學信仰
發布時間:2023-02-14
瀏覽次數:2086

版權歸原作者所有,如有侵權,請聯係我們(men)


當今世界,從(cong) 航天工程到信息管理,從(cong) 人工智能到過程控製,各個(ge) 領域都少不了計算機的參與(yu) 。

但計算機也並不是萬(wan) 能的,有很多事情是無法辦到的,甚至於(yu) 一些看似十分簡單的事情,計算機也做不到,比如產(chan) 生隨機數。計算機不能產(chan) 生隨機數嗎?很多活動,比如公司年會(hui) 搖獎,不都是采用計算機搖號的方式進行的嗎?的確,計算機可以生成隨機數,但計算機所產(chan) 生的隨機數是要加上一個(ge) 引號的,因為(wei) 它並不是真正意義(yi) 上的隨機數,而是“偽(wei) 隨機數”。


為(wei) 什麽(me) 計算機隻能產(chan) 生偽(wei) 隨機數呢?因為(wei) 電腦不會(hui) 擲骰子。

擲骰子對於(yu) 一個(ge) 人來說是一件無比簡單的事情,但對於(yu) 計算機來說卻是難於(yu) 上青天,因為(wei) 計算機的一切行為(wei) 都必須要有一個(ge) 特定的程序,產(chan) 生隨機數也不例外。什麽(me) 是隨機數?簡單來講就是一個(ge) 數字的出現不遵循任何的規律,第一個(ge) 數字的出現不能夠決(jue) 定第二個(ge) 數字,同樣的,第三個(ge) 數字也與(yu) 前兩(liang) 個(ge) 數字沒有任何關(guan) 係,這對於(yu) 計算機來說就是一件不可能的事情。計算機可以通過對算法的改進而讓“偽(wei) 隨機數”的產(chan) 生過程變得更加複雜,但這仍然不能改變“偽(wei) 隨機數”的本質。


那麽(me) 計算機到底是如何產(chan) 生“偽(wei) 隨機數”的呢?

最早的偽(wei) 隨機數生成法是由計算機之父馮(feng) ·諾伊曼研發的,它被稱為(wei) “平方取中法”,現在這種隨機數生成方法已經被徹底廢棄了。所謂平方取中法,首先必須得選定一個(ge) 種子數字,這個(ge) 數字是事先設定的,可以是1234,也可以是5678,就以5678為(wei) 例吧,第一步是先對種子數字進行平方,5678乘以5678就等於(yu) 32239684。


完成了第一步平方之後,就是第二步,取中。

所謂取中,就是取32239684的中間四個(ge) 數,也就是去掉前麵的32和後麵的84,中間剩下的四個(ge) 數是2396,這就是第一個(ge) 隨機數。第二個(ge) 隨機數就是讓第一個(ge) 隨機數重複平方取中的計算過程,也就是2396乘以2396等於(yu) 05740816,中間的四個(ge) 數字是7408,這就是第二個(ge) 隨機數。由於(yu) 平方取中法過於(yu) 簡單,隻要知道了種子數字,就能夠計算出之後所有的隨機數,所以現在已經不再使用了。


另一種相對簡單,但還在使用的隨機數生成方法被稱為(wei) “同餘(yu) 法”。

同餘(yu) 法首先要選定兩(liang) 個(ge) 定數,比如第一個(ge) 定數為(wei) 444,第二個(ge) 定數為(wei) 1234。現在還是要先有一個(ge) 種子數字,還是以5678為(wei) 例吧。第一步是用種子乘以第一個(ge) 定數,也就是5678乘以444等於(yu) 2521032,接下來第二步就是用第一步的結果除以第二個(ge) 定數,也就是2521032除以1234,四舍五入等於(yu) 2043,這就是第一個(ge) 隨機數。第二個(ge) 隨機數的產(chan) 生就是用第一個(ge) 隨機數重複上述步驟,2043乘以444,再除以1234,等於(yu) 735,這就是第二個(ge) 隨機數。


相比平方取中法來說,同餘(yu) 法就要複雜多了,不僅(jin) 要知道種子數字,還得知道兩(liang) 個(ge) 定數,才能夠計算出後麵所出現的所有隨機數。

當然,如果事先知道了所使用的是何種程序,再有足夠多的隨機數樣本,也可以計算出定數。不過同餘(yu) 法還可以進行變形,比如在乘法之後再加入一個(ge) 加法,再添加進去第三個(ge) 定數,這樣就變成了“線性同餘(yu) 法”,也就更複雜了一些。無論是同餘(yu) 法還是平方取中法,都是比較簡單的隨機數生成方法,而現在我們(men) 主要使用的隨機數生成方法是要複雜得多的“梅森旋轉算法”,這種算法涉及到了比較複雜的計算過程,涉及到了矩陣和矢量的數學星空体育官网入口网站,按照這種方法生成的隨機數分布非常接近於(yu) 真隨機數,但其本質上仍然是偽(wei) 隨機數,每個(ge) 數之間都是存在邏輯關(guan) 係的。



歡迎掃碼關(guan) 注深i科普!

我們(men) 將定期推出

公益、免費、優(you) 惠的科普活動和科普好物!


聽說,打賞我的人最後都找到了真愛。