计算机产生真随机数的方法主要有以下几种:
物理方法
利用物理现象:例如掷骰子、转轮、使用电子元件的噪音、核裂变等。这些方法产生的随机数发生器被称为物理性随机数发生器(TRNG)。
硬件随机数生成器:通过计算机芯片的物理工作方式产生真随机源,例如测量CPU频率与温度的不确定性、系统时间的误差以及声卡的底噪等。
数学方法
伪随机数生成器(PRNG):依赖于一个初始值(称为种子)和一个确定的算法公式。通过不断迭代这个算法,生成看似随机的数字序列。虽然这些数列是“似乎”随机的数,但它们实际上是通过一个固定的、可以重复的计算方法产生的。
双重随机化技术:结合物理方法和数学方法,通过计算机芯片的物理工作方式产生真随机源,然后以此为种子进行数学变换,最终得到真随机数。
建议
在实际应用中,伪随机数通常足够使用,因为它们在统计上具有类似于随机数的特征,并且生成速度较快。然而,在需要高质量随机数的应用中,如密码学,通常会使用真正的随机数,例如通过硬件随机数生成器或基于量子力学的随机数生成器。
如果需要手动产生随机数,可以利用计算机的一些内部状态,如CPU的时钟周期、温度等,通过测量这些不确定性来生成随机数。这种方法虽然简单,但产生的随机数质量可能较低,适用于非关键性应用。