gpt4 book ai didi

c++ - 模式返回伪随机数生成器

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:51 24 4
gpt4 key购买 nike

编辑:

由于很多人的回答都不知道我在问什么,我重新措辞了这个问题。

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() 的源代码,它返回一个 0 到 65535 的伪随机 16 位值。如果调用 65536 次,它将只返回 0 到 65535 之间的每个数字一次,没有重复。如果你再做一次,它会返回相同的序列。不是一个很好的随机数生成器,但它有它的用途。

我曾经在 1984 年左右从 Dr. Dobbs Journal of Computer Calisthenics and Orthodontia 那里获得了这方面的代码。

这看起来与噪声发生器非常相似,但异常(exception)情况是循环重复并且不适用于音频。在 48 kHz 下渲染相同的 64K 16 位 PCM 样本会在不到 1.5 秒的时间内明显重复,而且我从未听说过 16 位噪声发生器。

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

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

对于措辞不佳的原始问题,我们深表歉意,感谢您抽出时间。

最佳答案

我相信您正在寻找的是 linear-feedback shift register .它可以具有您似乎想要以看似随机的顺序返回完整序列而不重复范围内的元素的属性。

关于c++ - 模式返回伪随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43223772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com