概述
随机性(Randomness)是偶然性的一种形式,具有某一概率的事件集合中的各个事件所表现出来的不确定性。对于一个随机事件可以探讨其可能出现的概率,反映该事件发生的可能性的大小。随机性在自然科学和哲学上有着重要的地位,也吸引大量的学者在这方面的研究,随机性在实际应用中也是一种极其重要的资源,当前在许多的领域中发挥着重要的作用,例如博弈,统计抽样,计算机模拟,密码学等。随机数的概念也由随机性而诞生。
1. 随机数
1.1 随机数介绍
随机数是指在一定范围内,按照一定的概率分布规律产生的数值,是统计学和计算机科学中的重要概念。在计算机程序中,随机数通常是由伪随机数生成器生成的,即根据某个初始种子值,采用一定的算法生成的序列。随机数序列具有不可预测性和不可重复性,能够在模拟实验、密码学、游戏、抽样调查等领域得到广泛应用。
具备实用价值的随机数,首先要满足一定的随机特性:在任意给定范围内,由独立数字在给定的概率分布中抽样构成的序列;随机序列中的数字互相没有关联,获知序列中的一个或多个数字,并不能由此预测序列中的其它数字;具有与随机位相同的统计特性,不可预测、不能再现。其次该随机数应当在有限的长度中实现这些随机特性,以符合其在信息设备中的实用目标。
随机数还有很多衍生概念,例如均匀分布、正态分布、随机过程等。这些概念在统计学、概率论、信息论等领域都有重要应用,是理解和应用这些学科的基础。
1.2 真随机数与伪随机数
在计算中,硬件随机数生成器(HRNG)或真随机数生成器是一种从物理过程而不是通过算法生成随机数的设备。这种装置通常基于微观现象,这些微观现象产生低水平的、统计上随机的“噪声”信号,如热噪声、光电效应(涉及分束器)和其他量子现象。理论上,这些随机过程是完全不可预测的,只要控制这种现象的方程是未知的或不可计算的。这与通常在计算机程序中实现的伪随机数生成的范例形成对比。
伪随机数生成器(PRNG),也称为确定性随机位生成器(DRBG),是一种用于生成其属性近似于随机数序列属性的数字序列的算法。PRNG生成的序列不是真正随机的,因为它完全由称为PRNG的种子(可能包括真正随机的值)的初始值确定。虽然可以使用硬件随机数生成器生成更接近真实随机的序列,但伪随机数生成器在实际中对其生成数字的速度和再现性非常重要。随机数发生器在模拟(例如,蒙特卡洛方法)、电子游戏(例如,程序生成)和密码学等应用中至关重要。密码应用要求输出不能从早期输出中预测,需要更复杂的算法,这些算法不继承简单PRNG的线性。
如何才能生成随机数?生成随机数有两种主要方法:
- 第一种方法,测量一些预期随机的物理现象