除了应用在游戏中,随机数也被用于安全加密方面。为了保证信息的安全,加密系统不能一直使用同一个密码,而是使用一些毫无章法的数字,让黑客根本无法猜测。
伪随机数
在平方取中法中,我们先给电脑程序定一个四位的起始值(通常被称为种子),计算种子的平方数,然后提取平方数中间的四个数字。例如,种子为3895,它的平方数为15171025,那么电脑取得的随机数就是1710(中间4位)。当程序继续进行,1710的平方数为2924100,那么下一个随机数就是9241(不够八位数,在前面补0)。这样就能够产生介于0到9999之间的伪随机数。
从上述的两种规则中,我们可以看出,一个数字是由上一个数字所决定的,如果种子不变,产生的随机数序列也不会变,因此,伪随机数可以说是完全不随机的。而且当计算过程重复得足够多时,数列就会陷入循环之中,仅仅是从表面上看,伪随机数也不那么随机了。比如,使用平方取中法生成的数列中的一项是2916,那么接下来就是:5030、3009、540、2916,后面不断重复。
而m、a、c这三个数字是由程序员预先确定好的,它们的数值已经写在了程序里,它们可以是2位数也可以是4位数。对三个数字的要求是:程序员要提前测试,使得出的随机数重复之前,这个公式必须产生了0到m之间的所有数,而且产生的序列应该看起来是随机的,否则就要重新设定m、a、c这三个数字。
除了伪随机数,实际上计算机还可以生成一类“真”随机数。
前文中的“时间种子”也是真随机数,因为人在什么时候按下起始键是无法预测的。不过,由于真随机数的生成速度太慢了,所以在生活中,人们很少接触到真随机数。然而真随机数一定随机吗?为了搞清这个问题,我们要先明确随机的定义,即当我们无法预测某事物,或者某事物并没有什么明显的模式时,我们就称它是随机的。但某些物理现象其实是确定的,并不是随机的,因此真随机数也不一定随机。
很多时候,事件看起来是随机的,仅仅是因为我们缺少信息,或者预测的过程太过复杂。而且有些事件并不是没有任何模式,有可能我们还没有找到它的模式。
量子随机性
如果你还记得薛定谔那只可怜的猫,你应该知道:在我们打开盒子前,这只猫同时处于两种状态,猫既是死的也是活的。这听上去像是一个悖论,然而微观世界的物理规则确确实实是这样的。微观世界粒子的空间分布和动量是完全不确定的(即量子力学的不确定性原理),就像那只猫,如果我们没有打开盒子,猫仍然同时处于两种状态。只有我们看它,它才有了确定的状态。
随着我们掌握的信息越来越多,计算能力越来越强大,我们将有能力预测出目前无法预测的随机性事件,这一事实令我们感到恐慌,不过幸好我们还有量子随机性。但是如果有一天,我们能够推翻现在的微观物理规则,我们甚至能够准确地预测粒子的量子状态,那么世界将毫无秘密可言,游戏也将毫无乐趣。

