当前位置在: 首页 > 传播中心
传播中心    
有什么事是计算机做不到的?产生真随机数,电脑不会掷骰子
新闻来源:宁夏科普作家协会     作者:     发表时间:2023-02-14     阅读次数:    


当今世界,从航天工程到信息管理,从人工智能到过程控制,各个领域都少不了计算机的参与。

但计算机也并不是万能的,有很多事情是无法办到的,甚至于一些看似十分简单的事情,计算机也做不到,比如产生随机数。计算机不能产生随机数吗?很多活动,比如公司年会摇奖,不都是采用计算机摇号的方式进行的吗?的确,计算机可以生成随机数,但计算机所产生的随机数是要加上一个引号的,因为它并不是真正意义上的随机数,而是伪随机数

为什么计算机只能产生伪随机数呢?因为电脑不会掷骰子。

掷骰子对于一个人来说是一件无比简单的事情,但对于计算机来说却是难于上青天,因为计算机的一切行为都必须要有一个特定的程序,产生随机数也不例外。什么是随机数?简单来讲就是一个数字的出现不遵循任何的规律,第一个数字的出现不能够决定第二个数字,同样的,第三个数字也与前两个数字没有任何关系,这对于计算机来说就是一件不可能的事情。计算机可以通过对算法的改进而让伪随机数的产生过程变得更加复杂,但这仍然不能改变伪随机数的本质。

那么计算机到底是如何产生“伪随机数”的呢?

最早的伪随机数生成法是由计算机之父冯·诺伊曼研发的,它被称为平方取中法,现在这种随机数生成方法已经被彻底废弃了。所谓平方取中法,首先必须得选定一个种子数字,这个数字是事先设定的,可以是1234,也可以是5678,就以5678为例吧,第一步是先对种子数字进行平方,5678乘以5678就等于32239684

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

所谓取中,就是取32239684的中间四个数,也就是去掉前面的32和后面的84,中间剩下的四个数是2396,这就是第一个随机数。第二个随机数就是让第一个随机数重复平方取中的计算过程,也就是2396乘以2396等于05740816,中间的四个数字是7408,这就是第二个随机数。由于平方取中法过于简单,只要知道了种子数字,就能够计算出之后所有的随机数,所以现在已经不再使用了。

另一种相对简单,但还在使用的随机数生成方法被称为“同余法”。

同余法首先要选定两个定数,比如第一个定数为444,第二个定数为1234。现在还是要先有一个种子数字,还是以5678为例吧。第一步是用种子乘以第一个定数,也就是5678乘以444等于2521032,接下来第二步就是用第一步的结果除以第二个定数,也就是2521032除以1234,四舍五入等于2043,这就是第一个随机数。第二个随机数的产生就是用第一个随机数重复上述步骤,2043乘以444,再除以1234,等于735,这就是第二个随机数。

相比平方取中法来说,同余法就要复杂多了,不仅要知道种子数字,还得知道两个定数,才能够计算出后面所出现的所有随机数。

当然,如果事先知道了所使用的是何种程序,再有足够多的随机数样本,也可以计算出定数。不过同余法还可以进行变形,比如在乘法之后再加入一个加法,再添加进去第三个定数,这样就变成了线性同余法,也就更复杂了一些。无论是同余法还是平方取中法,都是比较简单的随机数生成方法,而现在我们主要使用的随机数生成方法是要复杂得多的梅森旋转算法,这种算法涉及到了比较复杂的计算过程,涉及到了矩阵和矢量的数学知识,按照这种方法生成的随机数分布非常接近于真随机数,但其本质上仍然是伪随机数,每个数之间都是存在逻辑关系的。文章内容来源于科学信仰。



 
上一篇:如果地球停止自转,江河湖海中的鱼类何去何从?
下一篇:征服千年麻风——20世纪人类抗疫史高光时刻

宁ICP备2021001770号-1   宁公网安备64010402001042号

宁夏科普作家协会  (www.nxkpzx.cn)@2020-2022 All Rights Reserved

地址:宁夏银川市兴庆区凤凰北街172号  邮编: 750001 电话: 0951-6851830  Email: nxkpzx0951@126.com