电脑生成的随机数是真的随机数吗?
2022/11/7 17:00:00 中国科普博览
电脑在制造数列时需要特定的程序及算法。由于随机数“不存在决定下一个数字的规律”,因此,电脑按照特定程序等规律生成的数列不能算是真正意义上的随机数。
但在实际应用中,它们可以替代真正的随机数,或者更恰当的说法是,它们是可以被当成随机数的“伪随机数”。
首次研究伪随机数的是电脑之父、匈牙利数学家约翰·冯·诺伊曼(John von Neumann,1903~1957)。冯·诺伊曼研究的“平方取中法”是最早的伪随机生成法。
约翰·冯·诺伊曼,制造了现代计算机的原型。他的研究影响了从电脑游戏理论到原子弹开发等广泛领域。
以下是冯·诺伊曼研究的最早的伪随机数生成算法——“平方取中法”和现在依然在使用的“线性同余法”。
平方取中法(4位数的情况下)
取一个4位数作为“种子”(随机数的种子,在例子中为有下划线的1234)。种子进行平方操作后得到一个八位数(不足八位的在前面用0补足),取这个八位数的中间4位(5227)作为第一个伪随机数。然后将这个数(5227)按照相同的操作得出下一个伪随机数(3215)。重复以上操作不断得出伪随机数的方法称为平方取中法。
线性同余法(4位数的情况下)
将种子(例子中为有下划线的1234)乘以事先决定好的的定数(例子中为567),然后加上另一个定数(例子中为89)得到一个数字(699767)。将这个数字除以一个定数(例子中为9773),然后求余数。把这个余数(1657)作为第一个伪随机数。将这个1657按照相同操作得到下一个伪随机数(2146)。重复以上操作不断得出伪随机数的方法称为线性同余法。在加式中使用的定数为0时称为“乘同余法”。
在冯·诺伊曼之后又开发了以“线性同余法”为首的各种伪随机数生成法。伪随机数的好坏取决于它和 “真正的随机数的接近程度”以及自身的“生成速度”。目前,公认最好的伪随机数生成算法是全世界程序员广泛使用的、由日本广岛大学松本真教授和日本山形大学西村拓土副教授于1998年研发出的“梅森旋转算法”。要理解这个算法需要矢量和矩阵等数学知识,因而在此不做详细介绍,这一算法巧妙利用了“梅森素数”的特殊性质。
梅森旋转算法
下图的三维空间内有(231—1)个点,每个点的坐标来自使用线性同余法生成的3个伪随机数。从这些点上可以看到规则的纹样或间隙。右图则是使用梅森旋转算法得到的点配置相同个数的结果,并不能看出有规律的纹样或间隙。
当然,使用这种方法生成的随机数也只是伪随机数,并不是“真正的随机数”。伪随机数之父冯·诺伊曼曾说过:“使用公式制造随机数,从某种意义上来说是犯罪。”
来源:科学世界本文已获转载授权,如需转载请联系原作者文章仅代表作者观点,不代表中国科普博览立场
转载注明出处 未经授权不得转载转载授权、合作、投稿事宜,联系webmaster@kepu.net.cn
中国科普博览是中科院科普云平台,由中科院计算机网络信息中心主办,依托中科院高端科学资源,致力于传播前沿科学知识,提供趣味科教服务。
点这里告诉我你在看
源网页 http://weixin.100md.com
返回 中国科普博览 返回首页 返回百拇医药