随机数生成器
随机数生成器主要分为两类:真随机数生成器(TRNG)和伪随机数生成器(PRNG)。
真随机数生成器(TRNG)
- 真随机数生成器基于物理过程(如热噪声、放射性衰变等)来产生随机数。这类生成器产生的随机数序列在理论上可以是无限长的,但实际上受限于采集和记录数据的物理设备的限制。
伪随机数生成器(PRNG)
- 伪随机数生成器通过算法来产生看似随机的数。由于算法是确定的,因此给定相同的种子或初始状态,PRNG将产生完全相同的随机数序列。PRNG产生的随机数序列的长度是有限的,通常由其算法设计和内部状态大小决定。只要随机种子相同,随机序列就会相同,即重新设置完随机种子之后,接下来每次随机出来的值是确定的。
随机种子生成的算法
1. 线性同余法(LCGs)
- 基于一个递归公式生成新的随机数,如
Xn+1 = (aXn + c) mod m
,其中a
、c
和m
是预先设定的常数。
2. 梅森旋转算法(Mersenne Twister)
- 一种高性能的伪随机数生成器,因其周期长且通过多项式混沌映射产生的随机性较好而广泛应用于各种编程语言的标准库中。
3. 中间平方法(Mid-square Method)
- 早期由冯·诺依曼提出的随机数生成方法,通过计算并截取大整数平方的中间部分作为下一个随机数种子。
4. 组合线性同余发生器(Combined LCGs )
- 为了提高随机数的质量,将多个线性同余发生器的结果组合起来。