我正在出于学习目的在软件中编程LFSR(线性反馈移位寄存器),并且在用作伪随机数生成器(PRNG)时遇到了一些限制。
- 如果种子的“ 1”位很少且使用的抽头很少,则它需要很大的“启动时间”才能产生明显的随机输出,并且“ 1”和“ 0”之间的分布几乎相等,或者较短的“ 0”运行。我猜想用更多的水龙头,这样的启动会快得多,但是我发现所有预先计算的表都给出了两个或四个水龙头。
- 顺序号是高度相关的,这是可以预期的,因为如果输出位为0,则下一个数字将是前一个的一半。对于带有抽头[15,14]的15位LFSR,在平面中绘制一对连续数字作为点可得出以下结果。理想的PRNG应该将这些点散布到整个地方。
我知道LFSR被用作快速硬件计数器,但是我也已经看到它被用作PRNG来产生白噪声。如何在质量如此差的现实应用中使用它?