电脑生成的随机数是真的随机数吗?

电脑在制造数列时需要特定的程序及算法。由于随机数“不存在决定下一个数字的规律”,因此,电脑按照特定程序等规律生成的数列不能算是真正意义上的随机数。

但在实际应用中,它们可以替代真正的随机数,或者更恰当的说法是,它们是可以被当成随机数的“伪随机数”。

电脑生成的伪装随机数

首次研究伪随机数的是电脑之父、匈牙利数学家约翰·冯·诺伊曼(John von Neumann,1903 1957)。冯·诺伊曼研究的“平方取中法”是最早的伪随机生成法。

约翰·冯·诺伊曼,制造了现代计算机的原型。他的研究影响了从电脑游戏理论到原子弹开发等广泛领域。

以下是冯·诺伊曼研究的最早的伪随机数生成算法——“平方取中法”和现在依然在使用的“线性同余法”。

平方取中法(4位数的情况下)

取一个4位数作为“种子”(随机数的种子,在例子中为有下划线的1234)。种子进行平方操作后得到一个八位数(不足八位的在前面用0补足),取这个八位数的中间4位(5227)作为第一个伪随机数。然后将这个数(5227)按照相同的操作得出下一个伪随机数(3215)。重复以上操作不断得出伪随机数的方法称为平方取中法。

线性同余法(4位数的情况下)

将种子(例子中为有下划线的1234)乘以事先决定好的的定数(例子中为567),然后加上另一个定数(例子中为89)得到一个数字(699767)。将这个数字除以一个定数(例子中为9773),然后求余数。把这个余数(1657)作为第一个伪随机数。将这个1657按照相同操作得到下一个伪随机数(2146)。重复以上操作不断得出伪随机数的方法称为线性同余法。在加式中使用的定数为0时称为“乘同余法”。

在冯·诺伊曼之后又开发了以“线性同余法”为首的各种伪随机数生成法。伪随机数的好坏取决于它和 “真正的随机数的接近程度”以及自身的“生成速度”。目前,公认最好的伪随机数生成算法是全世界程序员广泛使用的、由日本广岛大学松本真教授和日本山形大学西村拓土副教授于1998年研发出的“梅森旋转算法”。要理解这个算法需要矢量和矩阵等数学知识,因而在此不做详细介绍,这一算法巧妙利用了“梅森素数”的特殊性质。

梅森旋转算法

下图的三维空间内有(2—1)个点,每个点的坐标来自使用线性同余法生成的3个伪随机数。从这些点上可以看到规则的纹样或间隙。右图则是使用梅森旋转算法得到的点配置相同个数的结果,并不能看出有规律的纹样或间隙。

当然,使用这种方法生成的随机数也只是伪随机数,并不是“真正的随机数”。伪随机数之父冯·诺伊曼曾说过:“使用公式制造随机数,从某种意义上来说是犯罪。”


转载内容仅代表作者观点

不代表中科院物理所立场

如需转载请联系原公众号


来源:科学世界

编辑:Childe



展开阅读全文

页面更新:2024-04-22

标签:随机数   约翰   定数   位数   线性   算法   中法   种子   例子   操作   电脑

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top