模式返回伪随机数生成器

Pattern returning pseudo random number generator

本文关键字:随机数生成器 返回 模式      更新时间:2023-10-16

编辑:

由于很多人的回答不知道我在问什么,我改写了这个问题。

extern unsigned short lfsr();
int foo[65536];
for (int i = 0; i < 65536; i++)
foo[lfsr()] = 1;
// every element of foo has been set to 1.

我想要lfsr()的源代码,它返回一个伪随机 16 位值,0 到 65535。如果调用 65536 次,它将只返回一次从 0 到 65535 的每个数字,没有重复。如果再次执行此操作,它将返回相同的序列。不是一个很好的随机数生成器,但它有其用途。

我曾经在1984年左右从Dobbs博士的计算机健美操和正畸杂志中获得过这方面的代码。

这似乎与噪音发生器非常相似,但例外是循环重复并且不适用于音频。在 48 kHz 的不到 1.5 秒内渲染相同的 64K 16 位 PCM 样本会明显重复,而我从未从 16 位噪声发生器那里听说过这一点。

注意: 随机播放方法在 1984 年是行不通的,因为数组需要 128K,这将是 Apple][ 或类似计算机上可用内存的两倍多。

答:感谢Jesper Juhl和Jim Mischel将其识别为LFSR,线性反馈移位寄存器以及在哪里可以找到原始文章。

很抱歉原始问题措辞不佳,感谢您的时间。

我相信您正在寻找的是线性反馈移位寄存器。它可以具有您似乎想要的属性,即以看似随机的顺序返回完整序列,而无需重复该范围的元素。