随机数不随机那么它们到底是怎么产生的呢,数学中怎么产生随机数
除了应用在游戏中,随机数也被用于安全加密方面。为了保证信息的安全,加密系统不能一直使用同一个密码,而是使用一些毫无章法的数字,让黑客根本无法猜测。
然而,电脑没有思想,它只能执行一些人类(程序员)提前写好的指令,也就是说,电脑是确定性的。因此,随机数并不是真的随机,那么它们到底是怎
许多游戏都会设置抽签环节,比如:在大热手游《阴阳师》里,游戏角色就需要通过抽签获得。游戏抽签的机制和赌博类似,我们每次抽签,电脑就会生成一个随机数,这个随机数便决定了你抽到的是蝴蝶精还是大天狗(游戏角色)。
除了应用在游戏中,随机数也被用于安全加密方面。为了保证信息的安全,加密系统不能一直使用同一个密码,而是使用一些毫无章法的数字,让黑客根本无法猜测。
然而,电脑没有思想,它只能执行一些人类(程序员)提前写好的指令,也就是说,电脑是确定性的。因此,随机数并不是真的随机,那么它们到底是怎么产生的呢?
伪随机数
我们生活中最常见的随机数被称为“伪”随机数,伪随机数不是真正的随机数,只是看上去像是随机的罢了,这类随机数单纯由电脑程序决定,即它们的产生服从一些既定的规则,比如平方取中法和梅森旋转法。
在平方取中法中,我们先给电脑程序定一个四位的起始值(通常被称为种子),计算种子的平方数,然后提取平方数中间的四个数字。例如,种子为3895,它的平方数为15171025,那么电脑取得的随机数就是1710(中间4位)。当程序继续进行,1710的平方数为2924100,那么下一个随机数就是9241(不够八位数,在前面补0)。这样就能够产生介于0到9999之间的伪随机数。
另外一种产生伪随机数的方法是梅森旋转法,使用这种规则产生的随机数需要四个数:m、a、c和种子数(初始值),计算随机数时,我们先用种子数乘以a加上c,再除以m取余数。例如,m、a、c和种子数分别取值7829、378、2310、4321,那么得到的随机数就是(4321×378+2310)/7829=208……7216。那伪随机数就是余数7216。当然,这个过程继续重复就会产生一系列的随机数。
从上述的两种规则中,我们可以看出,一个数字是由上一个数字所决定的,如果种子不变,产生的随机数序列也不会变,因此,伪随机数可以说是完全不随机的。而且当计算过程重复得足够多时,数列就会陷入循环之中,仅仅是从表面上看,伪随机数也不那么随机了。比如,使用平方取中法生成的数列中的一项是2916,那么接下来就是:5030、3009、540、2916,后面不断重复。
值得一提的是梅森旋转法的输入值只有种子数是可变的,目前90%的游戏都是使用时间作为种子数的,当你打开抽签程序开始抽签,程序就会记录你按键时的时间,比如11点32分43.576836秒,使用小数点后的三四位68作为种子。一旦种子确定了,后面的随机数序列其实就已经确定了。因此,当你抽签老是失败时,不妨重启程序,或者换个时间试试。
而m、a、c这三个数字是由程序员预先确定好的,它们的数值已经写在了程序里,它们可以是2位数也可以是4位数。对三个数字的要求是:程序员要提前测试,使得出的随机数重复之前,这个公式必须产生了0到m之间的所有数,而且产生的序列应该看起来是随机的,否则就要重新设定m、a、c这三个数字。
真随机数也不一定随机
除了伪随机数,实际上计算机还可以生成一类“真”随机数。
为了生成真随机数,计算机需要测量某种随机的物理现象。例如,我们可以测量某一时刻的大气噪声(自然界雷暴活动所产生的电磁辐射),测量显示的数字就可以输入电脑,作为一个随机数或者被电脑“加工”成一个随机数。此时,计算机便引入了自然界的随机性。
前文中的“时间种子”也是真随机数,因为人在什么时候按下起始键是无法预测的。不过,由于真随机数的生成速度太慢了,所以在生活中,人们很少接触到真随机数。然而真随机数一定随机吗?为了搞清这个问题,我们要先明确随机的定义,即当我们无法预测某事物,或者某事物并没有什么明显的模式时,我们就称它是随机的。但某些物理现象其实是确定的,并不是随机的,因此真随机数也不一定随机。
例如,我们一直认为扔硬币是随机性事件,但它本质上并不是随机的,因为如果我们能知道扔硬币时的初始状态,即硬币的受力情况、运动方向和速度等,就可以在硬币落到地面之前,推测出最终结果。在我们抛出硬币的那一刻,它就已经是一个确定性事件了。实际上,已经有研究者建造出了一个扔硬币的机器人,这个机器人可以精确控制硬币的初始状态,来得到任何研究人员想要的结果并且万无一失。
很多时候,事件看起来是随机的,仅仅是因为我们缺少信息,或者预测的过程太过复杂。而且有些事件并不是没有任何模式,有可能我们还没有找到它的模式。
例如,尽管大气噪声非常难预测,但它仍是一个确定性系统。所有的噪声都是从某一个地方产生的,如果我们可以找到噪声产生时的初始状态,在理论上,我们就可以预测噪声的数值。
量子随机性
此时,一个问题可能会萦绕在你的脑海中:在我们知道所有的信息的情况下,有什么事情是无法预测的?答案恐怕只能到量子的世界里寻找了。
如果你还记得薛定谔那只可怜的猫,你应该知道:在我们打开盒子前,这只猫同时处于两种状态,猫既是死的也是活的。这听上去像是一个悖论,然而微观世界的物理规则确确实实是这样的。微观世界粒子的空间分布和动量是完全不确定的(即量子力学的不确定性原理),就像那只猫,如果我们没有打开盒子,猫仍然同时处于两种状态。只有我们看它,它才有了确定的状态。
与经典物理学不同,没有什么其他的信息和计算能让我们对粒子的状态进行预测。不管是一个特定的放射性原子是否会衰变,还是一个电子的旋转方式,只有在我们看粒子的时候才能知道。
随着我们掌握的信息越来越多,计算能力越来越强大,我们将有能力预测出目前无法预测的随机性事件,这一事实令我们感到恐慌,不过幸好我们还有量子随机性。但是如果有一天,我们能够推翻现在的微观物理规则,我们甚至能够准确地预测粒子的量子状态,那么世界将毫无秘密可言,游戏也将毫无乐趣。
计算机的随机数是怎么产生的?
楼主您好!在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。
产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是它在产生是后面的那个数与前面的那个数毫无关系。
真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。
在真正关键性的应用中,比如在密码术中,人们一般使用真正的随机数。
文章评论