私はバイトのセット(たとえば10バイトまたは15バイト)を取ることができるバイトのPRNGを構築しようとしています。そのバイトのリストを返します。私は暗号について心配していませんが、それはほぼ一様に分散されなければなりません。可能な2^8の組み合わせをすべて打ち負かす必要があり、しばしば立ち往生することなく数字を繰り返す必要があります。暗号ではなく、8ビットの可逆PRNGを書き込もうとしています
私が読んだアルゴリズムのほとんどは、繰り返しを許さないか、損失を誘発し機能を逆転させるモジュラスまたは非循環シフトを使用することを意味します。また、アルゴリズムがカウントを使用した場合、バイトリストの入力が内部PRNGのカウンタが生成時に何であったかを知らないため、逆方向に作業するのは難しいでしょう。
私が探しているのは、あなたのケーキ・食べすぎの状況ですが、私が欠けていた別の解決策がないことを確認したいと思いました。
検索中、同様の要件を持つthis postが見つかりました。私はC#で書いていましたが、実際には構文は重要ではありません。
自分で書こうとしたすべてのアルゴリズムは暗号化されているため、繰り返しに失敗したり、配布が一様ではありません。私は反転、循環シフト、シードマスキングを使用しました。
あなたの参照先の投稿があなたの質問に答えているようです。 –
そのスレッドの答えは暗号を使用しています。私は何かが欠落していない限り、スタックされずに繰り返し出力することはできません。 – digdig