伪随机数生成器(PRNG,亦称确定性随机位生成器DRBG),是一种算法,用以生成与绝对随机数序列相仿的数字序列。这种生成器依赖于一个初始值,即种子,来产出相应的伪随机数序列。一旦种子确定,PRNG所生成的数字序列就变得完全确定,它产生的序列并不具备真正的随机性。
PRNG在众多领域中均扮演着重要的角色。例如在蒙特卡洛模拟、电子竞技以及密码学应用等方面,我们都可以看到PRNG的身影。
对于随机性,理想的随机数应当不含有统计学的偏差,呈现为一种完全杂乱的数列。不可预测性与不可重现性也是评判随机数质量的重要指标。具体而言,随机数不应能被预测,且除非数列被保存下来,否则不应能重现相同的数列。
这三个性质的严格性逐一提升,体现了对随机数更高层次的要求。在随机数的分类中,密码学所使用的随机数属于特定类型。
如前所述,当PRNG所依赖的种子确定后,其生成的随机数序列也就基本确定了。这里我们定义PRNG的周期为其所有可能起始状态下,能产生不重复序列的最长长度。显然,对于一个PRNG而言,其周期不会超过其所有可能的状态数。
需注意的是,即便遇到输出重复的情况,也不应直接认为是PRNG的周期。因为PRNG的状态通常大于其输出的位数。
可参考百科上的详细解释:伪随机数生成器详解。
当前通用的伪随机数生成器种类繁多,包括但不限于线性同余生成器(LCG)、线性回归发生器、Mersenne Twister、xorshift generators、WELL系列的生成器以及线性反馈移位寄存器(LFSR)等。
在实际应用中,伪随机数生成器可能会面临一些问题。例如,由于算法的局限性或特定条件下的不适用性,可能导致生成的随机数序列质量不高或存在偏差。
选择合适的伪随机数生成器并确保其正确使用至关重要。这有助于我们获得满足需求的随机数序列,从而在模拟、游戏、密码学等领域中取得更好的效果。