Cho*_*lly 0 c c++ random algorithm
编辑:
由于许多人的反应不知道我在问什么,我已经改写了这个问题.
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.
Run Code Online (Sandbox Code Playgroud)
我希望源代码lfsr()返回一个伪随机16位值,0到65535.如果调用65536次,它将返回0到65535之间的每个数字一次,没有重复.如果你再次这样做,它将返回相同的序列.不是一个伟大的随机数生成器,但它有其用途.
我曾经在1984年左右从Dr. Dobbs Journal of Computer Calisthenics和Orthodontia获得了这个代码.
这似乎与噪声发生器非常相似,但例外是循环重复并且不适用于音频.渲染相同的64K 16位PCM采样将在48 kHz的不到1.5秒内显着重复,我从未听说过16位噪声发生器.
注意:一个shuffle方法在1984年不会起作用,因为数组需要128K,这可能是Apple [或类似计算机]可用内存的两倍多.
答: 感谢Jesper Juhl和Jim Mischel将其识别为LFSR,线性反馈移位寄存器以及在哪里找到原始文章.
对不起措辞原文问题,感谢你的时间.