2017-04-05 23 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. 

私はと呼ばれる65536回はそれが無いの繰り返しで、正確に一度0から65535までのすべての数を返してしまう場合は65535に擬似ランダム16ビット値、0を返すlfsr()のソースコードをしたいです。もう一度やり直した場合、同じシーケンスが返されます。偉大な乱数発生器ではありませんが、それはその用途を持っています。

私はかつて1984年

周りコンピュータ体操や歯列矯正の博士ドブスジャーナルから、このためのコードを持っていたこれは、ノイズ発生器に非常に似ているようだが、例外は、サイクルが繰り返されることであり、それがために動作しないでしょうオーディオ。同じ64K 16ビットPCMサンプルをレンダリングすると、48 kHzで1.5秒未満で顕著な繰り返しが発生し、16ビットノイズジェネレータからは聞こえませんでした。

注:シャッフル方法は1984年には機能しませんでした。これは、アップル社の[または類似のコンピュータで使用可能なメモリの2倍を超える128Kを使用するためです。

回答:LFSR、線形フィードバックシフトレジスタとどこ元の記事を見つけるためにとして、それを識別するためのJesperユールとジムMischelに 感謝。

ご迷惑をおかけした元の質問とお時間をありがとうございます。

+0

私はあなたの質問を数回読んだが、私はあなたが望むものを理解できませんでした。乱数を生成する方法をお望みですか?または、ピンクノイズ(1/fノイズ)を生成する方法が欲しいですか? –

+0

コードを募集している質問は、すぐにオフトピックとして投票しました。あなたの質問を編集してそれらの部分を削除する必要があります。 – user694733

+0

あなたの好きな検索エンジンに「急いでいるプディング」を打つ。 –

答えて

6

あなたが探しているものはlinear-feedback shift registerだと思います。範囲の要素を繰り返さずに、完全なシーケンスを一見無作為な順序で返すことを望むようなプロパティを持つことができます。

+0

まさに私が考えていたもの。 –

+1

これはまさに私が探していたもので、元の投稿を理解してくれてありがとう。 – ChocoBilly