簡體   English   中英

模式返回偽隨機數發生器

[英]Pattern returning pseudo random number generator

編輯:

由於許多人的回答都不知道我在問什么,所以我改掉了這個問題。

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 Juhl和Jim Mischel將其標識為LFSR,線性反饋移位寄存器以及在哪里可以找到原始文章。

對不起,措辭不佳的原始問題,感謝您的寶貴時間。

我相信您正在尋找的是線性反饋移位寄存器 它可以具有您似乎想要以看似隨機的順序返回完整序列而不重復范圍元素的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM