只見姚夏在信紙上寫到:
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];
}
……
?。ㄇ懊嬉淮蠖押旰徒Y構體定義我就不寫了,大家看著是個意思就行。)
這是用C語言寫的,當前部分是用來編寫隨機數(shù)種子函數(shù)。
時隔這么多年,姚夏沒有想到居然還會有用手寫代碼的時候。
要知道從當年做完華為和鵝廠的筆試題之后,姚夏就沒有這么干過了。
沒有開發(fā)工具,手寫代碼真的很麻煩。
姚夏用了兩頁信紙,詳細描述了梅森旋轉隨機數(shù)生成算法。
為什么選擇梅森旋轉,主要是基于幾個方面的原因。
首先,現(xiàn)在是1986年,距離1999年的Intel在其 i810芯片組上集成了芯片級的隨機數(shù)生成器,從而使得新的服務器都自帶熱噪聲的本地源隨機數(shù)生成能力——真正的隨機數(shù)生成器這一偉大的發(fā)明還有13年的時間。
在這段時間當中,如果程序猿想要實現(xiàn)比較【隨機】的【隨機數(shù)】基本上就是通過不斷的優(yōu)化算法來進行實現(xiàn)的。
隨機數(shù)對于整個計算機歷史都有著非常重要的意義,因為大家都知道計算機的本質是二進制,0101,這樣產生的數(shù)字幾乎不存在隨機性,也就是缺少了【擲骰子】的過程,但是隨著計算機的不斷發(fā)展,人們對于隨機的要求也越來越高。
且不說游戲當中需要讓AI來進行一定的隨機行為,讓玩家產生新鮮感,哪怕是正常的統(tǒng)計學當中,還有在各種通過計算機模擬的實驗當中,都需要用到隨機。
隨機數(shù)對于未來的信息加密、統(tǒng)計和游戲領域都有著舉足輕重的作用。
梅森旋轉是在1997年的時候,由松本真和西村拓士發(fā)明的。它完美地平衡了性能和隨機數(shù)的質量,并且經受住了時間的考驗。
姚夏直接用這個算法,可以引起清大教授的重視,從而能獲得直接去清大進修的機會。
第二個,這個算法雖然是1997年發(fā)明的,可本質上用現(xiàn)有的計算機性能就能支持,同時姚夏采用的C語言是現(xiàn)在比較主流的面向對象語言之一。
一切都符合這個時代的特征。
好多經典的算法都已經被前人給用過了,比如說非常有名的FFT算法,快速傅里葉變換,1965年的時候就已經被人給提出來。
不然姚夏肯定會優(yōu)先寫這個。
傅里葉的名字對于許多小伙伴們來說絕對不陌生,而且不管哪個領域,只要你學習跟數(shù)學、物理、計算機……理工科相關,就一定會為這個名字頭疼不已。
啊……
姚夏想到傅里葉變換,不由得感嘆一聲,它是多么美啊。
當然,姚夏寫的這個梅森旋轉也沒有好到哪里去,大家肯定都聽說過【梅森素數(shù)】,之所以這個算法的名字要叫做梅森旋轉,本身跟梅森沒有多少關系,而是因為它的循環(huán)節(jié)是2^19937-1,這個叫做梅森素數(shù)。
其他的還有什么迪杰斯特拉算法,RSA非對稱加密算法,哈希安全算法……都不如梅森旋轉更適合。
第三,相比起其他的可以【適當】表現(xiàn)自己水準的程序來說,姚夏寫這個感覺更容易一些,全部寫完加起來也不過百多行的代碼量。
姚夏也是思考了很久才確定下來要在信紙當中寫梅森旋轉的。
……
別看代碼量不大,但是姚夏寫了差不多有20分鐘左右。
終于寫完,姚夏再仔細檢查了一遍,確認沒有什么問題,包括注釋也很詳細和完美,這才松了口氣笑了起來。
打完收工。
姚夏回過頭來禮貌地將鋼筆遞還給周思文。
“謝謝叔叔?!?p> “不用不用?!?p> 周思文將鋼筆接過來,別到自己的上衣口袋里面,張了張嘴,很想問姚夏一些問題,可話到嘴邊才發(fā)現(xiàn)并不知道該從何問起,關鍵是他根本看不懂姚夏在寫些什么。
姚夏迅速地將信紙折疊好,放進信封當中。
“小同志,我剛才不是故意要看你的寫的信的哈,就是匆匆瞥了一眼,”旁邊的大叔湊過來,饒有興趣地問到,“我看你寫的英文也不完全是英文,數(shù)字也不全是數(shù)字,這寫的是什么呀,別人能看懂嗎?
我沒得別的意思,就是有些好奇?!?p> “哦,沒得事,”姚夏倒是滿不在乎,隨口回應到,“就是一段代碼,不是給普通人看的?!?p> 嘖嘖。
不是給普通人看的。
周思文沉默了,兩只眼睛忽閃忽閃的,欲言又止。
“計算機你知道嗎?”姚夏問到。
“計算器?”
“不,不是計算器,是……嗯……微機,微型計算機,或者叫做電腦?!?p> 看著對方一臉茫然的樣子,姚夏在心里面嘆了口氣,放棄了解釋。
“算了,叔叔,我解釋了你可能也不懂?!?p> 周思文確實不懂,聽得一頭霧水。
現(xiàn)在的計算機還不叫做計算機,國內更多的叫法叫做微機,不過在安南縣這種連電視機都沒有的地方,更別說見過微機的了。
姚夏本來已經準備好的飯粒用來粘信封的,可到了郵電局才發(fā)現(xiàn),寄信窗口的外面放著一大瓶漿糊,漿糊當中還有一個像冰棍棒子一樣的小木片。
他涂了點漿糊,把信封封口,然后在信封上寫下地址和方曉霞的名字交給工作人員。
“喲,寄帝都的啊?”窗口的大姐看了一眼。
“對。”姚夏點點頭。
“要加急不?”工作人員說,“加急8分,不加急4分錢?!?p> “加急吧?!币ο恼f。
他還挺急的。
再不急就得回去砍樹了。
工作人員給貼上郵票,然后對姚夏說,“可以了,我們會幫忙統(tǒng)一寄出去的,加急信的話,應該3天時間就到了?!?p> “好的,謝謝了。”
姚夏邁著歡快的步伐,轉瞬就出了郵電局的大門。
周思文看著姚夏離開的背影,兩只眼睛閃閃發(fā)亮,口中念叨著,“微機,微機……”
過了兩秒,他才如夢初醒般抬起頭來。
“哎呀。”
周思文一拍大腿,“忘記問他的名字和住處了。”
……