线性同余发生器
线性同余发生器
线性同余发生器(Linear congruential generator),简称LCG,是一种能产生具有不连续计算的伪随机序列的分段线性方程的算法,它代表了最古老和最知名的伪随机序列生成器算法之一,其理论相对容易理解,并且易于实现和快速,特别是在可以通过存储位截断提供模运算的计算机硬件上。
优缺点
线性同余发生器速度快,且需要较少的存储器保留状态,这使其对于模拟多个独立流非常有用。
线性同余发生器特有的一个缺陷是,如果用于选择n维空间中的点,那么这些点至多会位于 超平面。这是由于序列 的连续值之间的序列相关性。草率选择地乘法器通常会有较少间距平面,易出问题。光谱测试是LCG质量的一个简单测试,测量区间长度和可选择的乘数。
LCG特有的另一个缺陷是当 为2的幂时,低阶比特周期较短。这种情况可以通过使用大于所需输出的模数,并使用状态的有效比特来减轻。
LCG不可用于加密应用程序,或为这些应用程序使用密码安全的伪随机数生成器。然而,对于某些应用,LCG可能是一个不错的选择。例如,在嵌入式系统中,可用内存量通常受到严格限制。同样,在诸如视频游戏机这样的环境中,只需要一小部分LCG的高阶位就足够了。
好处
线性同余发生器的好处是,通过适当选择参数,区间长度可知且很长。虽然不是标准,但是一般情况下太短的区间长度在伪随机数发生器中是一个致命的缺陷。
虽然LCG能够产生伪随机数,且可以通过正规的随机性测试,但它对参数和的选择极为敏感。例如,和产生一个简单的进制计数器,它具有长的周期,但显然非随机。
简介
线性同余发生器(LCG)是一种伪随机序列生成器算法,能产生具有不连续计算的伪随机序列的分段线性方程。生成器由循环关系定义: