伪随机数

什么是伪随机数?

伪随机数是来自[0,1]均匀分布的随机数序列,是用确定性的算法计算得到的。但是,伪随机数不是假随机数,这里的“伪”是伪随机是有规律,但一般周期极长,在一定条件下,可以替代真随机数。

伪随机数具有什么特征?

伪随机数具有类似于真正随机数的统计特征,比如说:均匀性、独立性等;

但是,相比较真正的随机数,在计算生成伪随机数时,若使用的种子不变,那么得到的伪随机数的数序也不变。

在模拟使用中,伪随机数一般循环周期极长,并能通过随机数检验。

伪随机数有什么用途?

伪随机数可以用计算机大量生成,所以在模拟研究中,为了提高模拟效率,一般采用伪随机数代替真正的随机数。

比如说,许多密码系统的安全性依赖于随机数的生成,密码学必定要涉及到随机数。

其中,序列密码的保密性完全取决于密钥的随机性。如果密钥是真正的随机数,那么理论上就不可破译,但所需要的密钥量惊人的大,实际中并不可行。

所以,一般采用伪随机数来代替随机数,尽管密钥存在的一定的循环周期,如果周期足够长,就会有比较好的保密性。

计算机生成的随机数是真正的随机数吗?

由随机种子根据一定的算法得到的随机数,只要算法一定,随机种子一定,所得到的随机数是固定的。所以绝大数程序生成的随机数不是真正的随机数,是伪随机数。

并且,大多数程序,只要用户不设定随机种子,随机种子来自系统时钟。

另一方面,当前,通过计算机能获得真正的随机数,但不是由程序生成的,一般是通过持续采集外部噪声信号,比如说:主板温度传感器采集的温度、鼠标的移动轨迹等等,然后,再加工成随机数输出。

可以说,当前,计算机中,必须有真随机的输入,才能有真随机的输出。

宇宙中存在真随机数吗?

这简直是一个哲学讨论,在一般意义上,我们认为真随机数是存在的,但真随机数的获取往往是大费周章,或者需要繁琐而高价的物理设备。

真随机数多数采用物理性随机数发生器,也就是使用物理现象产生,比如说,掷硬币、投骰子、转轮、使用电子元件的噪音或者核裂变等等。技术要求比较高,物理过程比较复杂。