您現(xiàn)在的位置:首頁 > 科技 > 正文

有什么事是計(jì)算機(jī)做不到的?產(chǎn)生真隨機(jī)數(shù),電腦不會擲骰子-焦點(diǎn)熱文

時(shí)間:2023-02-13 10:40:18    來源:科普中國網(wǎng)    

當(dāng)今世界,從航天工程到信息管理,從人工智能到過程控制,各個(gè)領(lǐng)域都少不了計(jì)算機(jī)的參與。


(資料圖)

但計(jì)算機(jī)也并不是萬能的,有很多事情是無法辦到的,甚至于一些看似十分簡單的事情,計(jì)算機(jī)也做不到,比如產(chǎn)生隨機(jī)數(shù)。計(jì)算機(jī)不能產(chǎn)生隨機(jī)數(shù)嗎?很多活動,比如公司年會搖獎(jiǎng),不都是采用計(jì)算機(jī)搖號的方式進(jìn)行的嗎?的確,計(jì)算機(jī)可以生成隨機(jī)數(shù),但計(jì)算機(jī)所產(chǎn)生的隨機(jī)數(shù)是要加上一個(gè)引號的,因?yàn)樗⒉皇钦嬲饬x上的隨機(jī)數(shù),而是“偽隨機(jī)數(shù)”。

為什么計(jì)算機(jī)只能產(chǎn)生偽隨機(jī)數(shù)呢?因?yàn)殡娔X不會擲骰子。

擲骰子對于一個(gè)人來說是一件無比簡單的事情,但對于計(jì)算機(jī)來說卻是難于上青天,因?yàn)橛?jì)算機(jī)的一切行為都必須要有一個(gè)特定的程序,產(chǎn)生隨機(jī)數(shù)也不例外。什么是隨機(jī)數(shù)?簡單來講就是一個(gè)數(shù)字的出現(xiàn)不遵循任何的規(guī)律,第一個(gè)數(shù)字的出現(xiàn)不能夠決定第二個(gè)數(shù)字,同樣的,第三個(gè)數(shù)字也與前兩個(gè)數(shù)字沒有任何關(guān)系,這對于計(jì)算機(jī)來說就是一件不可能的事情。計(jì)算機(jī)可以通過對算法的改進(jìn)而讓“偽隨機(jī)數(shù)”的產(chǎn)生過程變得更加復(fù)雜,但這仍然不能改變“偽隨機(jī)數(shù)”的本質(zhì)。

那么計(jì)算機(jī)到底是如何產(chǎn)生“偽隨機(jī)數(shù)”的呢?

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

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

所謂取中,就是取32239684的中間四個(gè)數(shù),也就是去掉前面的32和后面的84,中間剩下的四個(gè)數(shù)是2396,這就是第一個(gè)隨機(jī)數(shù)。第二個(gè)隨機(jī)數(shù)就是讓第一個(gè)隨機(jī)數(shù)重復(fù)平方取中的計(jì)算過程,也就是2396乘以2396等于05740816,中間的四個(gè)數(shù)字是7408,這就是第二個(gè)隨機(jī)數(shù)。由于平方取中法過于簡單,只要知道了種子數(shù)字,就能夠計(jì)算出之后所有的隨機(jī)數(shù),所以現(xiàn)在已經(jīng)不再使用了。

另一種相對簡單,但還在使用的隨機(jī)數(shù)生成方法被稱為“同余法”。

同余法首先要選定兩個(gè)定數(shù),比如第一個(gè)定數(shù)為444,第二個(gè)定數(shù)為1234?,F(xiàn)在還是要先有一個(gè)種子數(shù)字,還是以5678為例吧。第一步是用種子乘以第一個(gè)定數(shù),也就是5678乘以444等于2521032,接下來第二步就是用第一步的結(jié)果除以第二個(gè)定數(shù),也就是2521032除以1234,四舍五入等于2043,這就是第一個(gè)隨機(jī)數(shù)。第二個(gè)隨機(jī)數(shù)的產(chǎn)生就是用第一個(gè)隨機(jī)數(shù)重復(fù)上述步驟,2043乘以444,再除以1234,等于735,這就是第二個(gè)隨機(jī)數(shù)。

相比平方取中法來說,同余法就要復(fù)雜多了,不僅要知道種子數(shù)字,還得知道兩個(gè)定數(shù),才能夠計(jì)算出后面所出現(xiàn)的所有隨機(jī)數(shù)。

當(dāng)然,如果事先知道了所使用的是何種程序,再有足夠多的隨機(jī)數(shù)樣本,也可以計(jì)算出定數(shù)。不過同余法還可以進(jìn)行變形,比如在乘法之后再加入一個(gè)加法,再添加進(jìn)去第三個(gè)定數(shù),這樣就變成了“線性同余法”,也就更復(fù)雜了一些。無論是同余法還是平方取中法,都是比較簡單的隨機(jī)數(shù)生成方法,而現(xiàn)在我們主要使用的隨機(jī)數(shù)生成方法是要復(fù)雜得多的“梅森旋轉(zhuǎn)算法”,這種算法涉及到了比較復(fù)雜的計(jì)算過程,涉及到了矩陣和矢量的數(shù)學(xué)知識,按照這種方法生成的隨機(jī)數(shù)分布非常接近于真隨機(jī)數(shù),但其本質(zhì)上仍然是偽隨機(jī)數(shù),每個(gè)數(shù)之間都是存在邏輯關(guān)系的。

更多內(nèi)容請關(guān)注公眾號:sunmonarch

標(biāo)簽: 偽隨機(jī)數(shù) 比較復(fù)雜

相關(guān)新聞

凡本網(wǎng)注明“XXX(非現(xiàn)代青年網(wǎng))提供”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和其真實(shí)性負(fù)責(zé)。

特別關(guān)注

熱文推薦

焦點(diǎn)資訊