官术网_书友最值得收藏!

第12章 12.微機(jī)是啥玩意兒?

  • 你好1986
  • 夢(mèng)三萬(wàn)
  • 2010字
  • 2022-11-14 20:44:43

只見(jiàn)姚夏在信紙上寫(xiě)到:

uint mt_seed(uint seed, uint *mt, int n)

{

int i;

memset(mt, 0x00, n*sizeof(uint));

for(i=1; i

{

mt[i]= MT_199332_F *(mt[i-1]^mt[i-1]>>(MT_199332_W-2))+i;

}

return mt[n-1];

}

……

(前面一大堆宏和結(jié)構(gòu)體定義我就不寫(xiě)了,大家看著是個(gè)意思就行。)

這是用C語(yǔ)言寫(xiě)的,當(dāng)前部分是用來(lái)編寫(xiě)隨機(jī)數(shù)種子函數(shù)。

時(shí)隔這么多年,姚夏沒(méi)有想到居然還會(huì)有用手寫(xiě)代碼的時(shí)候。

要知道從當(dāng)年做完華為和鵝廠的筆試題之后,姚夏就沒(méi)有這么干過(guò)了。

沒(méi)有開(kāi)發(fā)工具,手寫(xiě)代碼真的很麻煩。

姚夏用了兩頁(yè)信紙,詳細(xì)描述了梅森旋轉(zhuǎn)隨機(jī)數(shù)生成算法。

為什么選擇梅森旋轉(zhuǎn),主要是基于幾個(gè)方面的原因。

首先,現(xiàn)在是1986年,距離1999年的Intel在其 i810芯片組上集成了芯片級(jí)的隨機(jī)數(shù)生成器,從而使得新的服務(wù)器都自帶熱噪聲的本地源隨機(jī)數(shù)生成能力——真正的隨機(jī)數(shù)生成器這一偉大的發(fā)明還有13年的時(shí)間。

在這段時(shí)間當(dāng)中,如果程序猿想要實(shí)現(xiàn)比較【隨機(jī)】的【隨機(jī)數(shù)】基本上就是通過(guò)不斷的優(yōu)化算法來(lái)進(jìn)行實(shí)現(xiàn)的。

隨機(jī)數(shù)對(duì)于整個(gè)計(jì)算機(jī)歷史都有著非常重要的意義,因?yàn)榇蠹叶贾烙?jì)算機(jī)的本質(zhì)是二進(jìn)制,0101,這樣產(chǎn)生的數(shù)字幾乎不存在隨機(jī)性,也就是缺少了【擲骰子】的過(guò)程,但是隨著計(jì)算機(jī)的不斷發(fā)展,人們對(duì)于隨機(jī)的要求也越來(lái)越高。

且不說(shuō)游戲當(dāng)中需要讓AI來(lái)進(jìn)行一定的隨機(jī)行為,讓玩家產(chǎn)生新鮮感,哪怕是正常的統(tǒng)計(jì)學(xué)當(dāng)中,還有在各種通過(guò)計(jì)算機(jī)模擬的實(shí)驗(yàn)當(dāng)中,都需要用到隨機(jī)。

隨機(jī)數(shù)對(duì)于未來(lái)的信息加密、統(tǒng)計(jì)和游戲領(lǐng)域都有著舉足輕重的作用。

梅森旋轉(zhuǎn)是在1997年的時(shí)候,由松本真和西村拓士發(fā)明的。它完美地平衡了性能和隨機(jī)數(shù)的質(zhì)量,并且經(jīng)受住了時(shí)間的考驗(yàn)。

姚夏直接用這個(gè)算法,可以引起清大教授的重視,從而能獲得直接去清大進(jìn)修的機(jī)會(huì)。

第二個(gè),這個(gè)算法雖然是1997年發(fā)明的,可本質(zhì)上用現(xiàn)有的計(jì)算機(jī)性能就能支持,同時(shí)姚夏采用的C語(yǔ)言是現(xiàn)在比較主流的面向?qū)ο笳Z(yǔ)言之一。

一切都符合這個(gè)時(shí)代的特征。

好多經(jīng)典的算法都已經(jīng)被前人給用過(guò)了,比如說(shuō)非常有名的FFT算法,快速傅里葉變換,1965年的時(shí)候就已經(jīng)被人給提出來(lái)。

不然姚夏肯定會(huì)優(yōu)先寫(xiě)這個(gè)。

傅里葉的名字對(duì)于許多小伙伴們來(lái)說(shuō)絕對(duì)不陌生,而且不管哪個(gè)領(lǐng)域,只要你學(xué)習(xí)跟數(shù)學(xué)、物理、計(jì)算機(jī)……理工科相關(guān),就一定會(huì)為這個(gè)名字頭疼不已。

啊……

姚夏想到傅里葉變換,不由得感嘆一聲,它是多么美啊。

當(dāng)然,姚夏寫(xiě)的這個(gè)梅森旋轉(zhuǎn)也沒(méi)有好到哪里去,大家肯定都聽(tīng)說(shuō)過(guò)【梅森素?cái)?shù)】,之所以這個(gè)算法的名字要叫做梅森旋轉(zhuǎn),本身跟梅森沒(méi)有多少關(guān)系,而是因?yàn)樗难h(huán)節(jié)是2^19937-1,這個(gè)叫做梅森素?cái)?shù)。

其他的還有什么迪杰斯特拉算法,RSA非對(duì)稱加密算法,哈希安全算法……都不如梅森旋轉(zhuǎn)更適合。

第三,相比起其他的可以【適當(dāng)】表現(xiàn)自己水準(zhǔn)的程序來(lái)說(shuō),姚夏寫(xiě)這個(gè)感覺(jué)更容易一些,全部寫(xiě)完加起來(lái)也不過(guò)百多行的代碼量。

姚夏也是思考了很久才確定下來(lái)要在信紙當(dāng)中寫(xiě)梅森旋轉(zhuǎn)的。

……

別看代碼量不大,但是姚夏寫(xiě)了差不多有20分鐘左右。

終于寫(xiě)完,姚夏再仔細(xì)檢查了一遍,確認(rèn)沒(méi)有什么問(wèn)題,包括注釋也很詳細(xì)和完美,這才松了口氣笑了起來(lái)。

打完收工。

姚夏回過(guò)頭來(lái)禮貌地將鋼筆遞還給周思文。

“謝謝叔叔。”

“不用不用?!?

周思文將鋼筆接過(guò)來(lái),別到自己的上衣口袋里面,張了張嘴,很想問(wèn)姚夏一些問(wèn)題,可話到嘴邊才發(fā)現(xiàn)并不知道該從何問(wèn)起,關(guān)鍵是他根本看不懂姚夏在寫(xiě)些什么。

姚夏迅速地將信紙折疊好,放進(jìn)信封當(dāng)中。

“小同志,我剛才不是故意要看你的寫(xiě)的信的哈,就是匆匆瞥了一眼,”旁邊的大叔湊過(guò)來(lái),饒有興趣地問(wèn)到,“我看你寫(xiě)的英文也不完全是英文,數(shù)字也不全是數(shù)字,這寫(xiě)的是什么呀,別人能看懂嗎?

我沒(méi)得別的意思,就是有些好奇?!?

“哦,沒(méi)得事,”姚夏倒是滿不在乎,隨口回應(yīng)到,“就是一段代碼,不是給普通人看的?!?

嘖嘖。

不是給普通人看的。

周思文沉默了,兩只眼睛忽閃忽閃的,欲言又止。

“計(jì)算機(jī)你知道嗎?”姚夏問(wèn)到。

“計(jì)算器?”

“不,不是計(jì)算器,是……嗯……微機(jī),微型計(jì)算機(jī),或者叫做電腦。”

看著對(duì)方一臉茫然的樣子,姚夏在心里面嘆了口氣,放棄了解釋。

“算了,叔叔,我解釋了你可能也不懂。”

周思文確實(shí)不懂,聽(tīng)得一頭霧水。

現(xiàn)在的計(jì)算機(jī)還不叫做計(jì)算機(jī),國(guó)內(nèi)更多的叫法叫做微機(jī),不過(guò)在安南縣這種連電視機(jī)都沒(méi)有的地方,更別說(shuō)見(jiàn)過(guò)微機(jī)的了。

姚夏本來(lái)已經(jīng)準(zhǔn)備好的飯粒用來(lái)粘信封的,可到了郵電局才發(fā)現(xiàn),寄信窗口的外面放著一大瓶漿糊,漿糊當(dāng)中還有一個(gè)像冰棍棒子一樣的小木片。

他涂了點(diǎn)漿糊,把信封封口,然后在信封上寫(xiě)下地址和方曉霞的名字交給工作人員。

“喲,寄帝都的啊?”窗口的大姐看了一眼。

“對(duì)。”姚夏點(diǎn)點(diǎn)頭。

“要加急不?”工作人員說(shuō),“加急8分,不加急4分錢?!?

“加急吧?!币ο恼f(shuō)。

他還挺急的。

再不急就得回去砍樹(shù)了。

工作人員給貼上郵票,然后對(duì)姚夏說(shuō),“可以了,我們會(huì)幫忙統(tǒng)一寄出去的,加急信的話,應(yīng)該3天時(shí)間就到了?!?

“好的,謝謝了。”

姚夏邁著歡快的步伐,轉(zhuǎn)瞬就出了郵電局的大門。

周思文看著姚夏離開(kāi)的背影,兩只眼睛閃閃發(fā)亮,口中念叨著,“微機(jī),微機(jī)……”

過(guò)了兩秒,他才如夢(mèng)初醒般抬起頭來(lái)。

“哎呀?!?

周思文一拍大腿,“忘記問(wèn)他的名字和住處了?!?

……

主站蜘蛛池模板: 榕江县| 桓台县| 醴陵市| 南安市| 兰西县| 罗城| 鄢陵县| 古丈县| 拉孜县| 镶黄旗| 那坡县| 饶阳县| 博白县| 两当县| 衡山县| 开远市| 昆明市| 潞西市| 民乐县| 泰安市| 临高县| 伊金霍洛旗| 阿拉善右旗| 横峰县| 双峰县| 阜宁县| 临朐县| 沛县| 讷河市| 饶河县| 西丰县| 永清县| 宽甸| 龙州县| 阿拉善右旗| 南汇区| 宝坻区| 平定县| 西乡县| 泰安市| 德昌县|