计算机实现真随机的方法主要有以下几种:
物理随机数生成器
利用外部物理现象,如掷骰子、硬币翻转、电子元件的噪音、核裂变等,来产生随机数。这些方法技术要求较高,但能够生成真正的随机数。
系统时间和不确定性
利用计算机的系统时间及其固有的不确定因素,如CPU频率、温度、系统时间的误差以及声卡的底噪等,来生成随机数。这种方法虽然简单,但生成的随机数质量较差,且有重复性。
熵池
Unix内核中的随机数发生器(/dev/random)通过收集非确定性的设备事件,如机器运行环境中产生的硬件噪音,来作为种子,从而生成真随机数。这种方法依赖于操作系统和硬件,能够提供高质量的随机数。
硬件随机数生成器
使用专门的硬件设备,如随机数生成器芯片,来读取真随机信号,并将其转化为数字形式。这种方法通常用于需要高质量随机数的场合,如密码学。
软件结合硬件
在某些情况下,可以通过软件方法结合硬件来增强随机性。例如,使用硬件随机数生成器作为种子,然后通过软件算法进一步处理这些种子,以生成更高质量的随机数。
建议
在实际应用中,伪随机数通常已经足够满足需求,特别是在对随机性要求不高的情况下。然而,在需要高质量随机数的场合,如密码学或科学实验中,使用物理随机数生成器或硬件随机数生成器是更为可靠的选择。