2017-04-05 105 views
0

编辑:模式返回伪随机数发生器

这么多的没有的我是问什么想法的反应。由于,我已经改写了问题。

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年

这似乎非常相似,噪声发生器,但例外的是重复循环并不会为工作音频。渲染相同的64K 16位PCM采样在48 kHz下不到1.5秒会显着重复,我从来没有听说过16位噪声发生器。

注意: 一个混洗方法不会在1984年工作,因为该阵列将需要128K,这将超过Apple [或类似计算机上的可用内存的两倍。

答案: 感谢的Jesper居尔和吉姆米契尔用于识别它作为一个LFSR,线性反馈移位寄存器和在哪里找到原始制品。

对不起,原来的问题不好,谢谢你的时间。

+0

我几次读你的问题,但我不明白你想要什么。你想要一种产生随机数的方法吗?或者你想要一种方式来产生粉红噪声(1/f噪声)? –

+0

问题乞求代码得到关闭在这里相当快题外投票。你应该[编辑]你的问题删除这些部分。 – user694733

+0

在您最喜爱的搜索引擎中打“匆忙布丁”。 –

回答

6

我相信你在找什么是linear-feedback shift register。它可以具有您希望以看似随机顺序返回完整序列而不重复范围元素的属性。

+0

正是我在想什么。 –

+1

这就是我一直在寻找和感谢理解原来的帖子。 – ChocoBilly