请安装我们的客户端

更新超快的免费小说APP

下载APP
终身免费阅读

添加到主屏幕

请点击,然后点击“添加到主屏幕”

美女中文网 www.mnzw.com,你好1986无错无删减全文免费阅读!

    只见姚夏在信纸上写到:

    uintmt_seed(uintseed,uint*mt,intn)

    {

    inti;

    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;

    }

    returnmt[n-1];

    }

    ……

    (前面一大堆宏和结构体定义我就不写了,大家看着是个意思就行。)

    这是用C语言写的,当前部分是用来编写随机数种子函数。

    时隔这么多年,姚夏没有想到居然还会有用手写代码的时候。

    要知道从当年做完华为和鹅厂的笔试题之后,姚夏就没有这么干过了。

    没有开发工具,手写代码真的很麻烦。

    姚夏用了两页信纸,详细描述了梅森旋转随机数生成算法。

    为什么选择梅森旋转,主要是基于几个方面的原因。

    首先,现在是1986年,距离1999年的Intel在其i810芯片组上集成了芯片级的随机数生成器,从而使得新的服务器都自带热噪声的本地源随机数生成能力——真正的随机数生成器这一伟大的发明还有13年的时间。

    在这段时间当中,如果程序猿想要实现比较【随机】的【随机数】基本上就是通过不断的优化算法来进行实现的。

    随机数对于整个计算机历史都有着非常重要的意义,因为大家都知道计算机的本质是二进制,0101,这样产生的数字几乎不存在随机性,也就是缺少了【掷骰子】的过程,但是随着计算机的不断发展,人们对于随机的要求也越来越高。

    且不说游戏当中需要让AI来进行一定的随机行为,让玩家产生新鲜感,哪怕是正常的统计学当中,还有在各种通过计算机模拟的实验当中,都需要用到随机。

    随机数对于未来的信息加密、统计和游戏领域都有着举足轻重的作用。

    梅森旋转是在1997年的时候,由松本真和西村拓士发明的。它完美地平衡了性能和随机数的质量,并且经受住了时间的考验。

    姚夏直接用这个算法,可以引起清大教授的重视,从而能获得直接去清大进修的机会。

    第二个,这个算法虽然是1997年发明的,可本质上用现有的计算机性能就能支持,同时姚夏采用的C语言是现在比较主流的面向对象语言之一。

    一切都符合这个时代的特征。

    好多经典的算法都已经被前人给用过了,比如说非常有名的FFT算法,快速傅里叶变换,1965年的时候就已经被人给提出来。

    不然姚夏肯定会优先写这个。

    傅里叶的名字对于许多小伙伴们来说绝对不陌生,而且不管哪个领域,只要你学习跟数学、物理、计算机……理工科相关,就一定会为这个名字头疼不已。

    啊……

    姚夏想到傅里叶变换,不由得感叹一声,它是多么美啊。

    当然,姚夏写的这个梅森旋转也没有好到哪里去,大家肯定都听说过【梅森素数】,之所以这个算法的名字要叫做梅森旋转,本身跟梅森没有多少关系,而是因为它的循环节是2^19937-1,这个叫做梅森素数。

    其他的还有什么迪杰斯特拉算法,RSA非对称加密算法,哈希安全算法……都不如梅森旋转更适合。

... -->>

本章未完,点击下一页继续阅读

请安装我们的客户端

更新超快的免费小说APP

下载APP
终身免费阅读

添加到主屏幕

请点击,然后点击“添加到主屏幕”