すべての擬似乱数ジェネレーターは最終的に周期的ですか?それとも最終的には周期的ですか?
周期的ということは、有理数のように、最終的には周期的な部分列を生成するということです...
擬似ランダムとは、乱数のアルゴリズム/数学的な生成を意味します...
すべての擬似乱数ジェネレーターは最終的に周期的ですか?それとも最終的には周期的ですか?
周期的ということは、有理数のように、最終的には周期的な部分列を生成するということです...
擬似ランダムとは、乱数のアルゴリズム/数学的な生成を意味します...
回答:
外部のランダム性に依存せず、限られた量のメモリを使用するすべての擬似ランダムジェネレーターは、有限状態を持っているため、必然的に周期的です。それらは、出力を与える特別な「出力」状態を持つ巨大な決定論的有限オートマトンと考えることができます。すべての有限オートマトンは最終的に周期的であるため、すべての擬似乱数ジェネレーターは最終的に周期的な出力を生成します。
ただし、期間の長さは膨大な場合があります。たとえば、128ビットの暗号化状態のPRNGは、出力のビットごとに1回しかサイクルしない可能性があるため、ナノ秒ごとに1ビットを出力しても、PRNGが繰り返されると太陽系は停止します。
PRNGは、メモリの無制限の量を(現実的ではない)、それは、例えば、出力のバイナリ拡張することができる使用することが許可されている場合ため、我々が知っている、最終的には周期的ではない(は非合理的です)。 √
PRNGはステートマシンです。内部入力のみに基づいている場合(ハードウェアとソフトウェアの組み合わせであるPoker Stars RNGとは対照的に、サウンドサンプルから継続的にシード)、(C、S1、...)Cが得られますは現在の(または以前の)値であり、S1、...は状態のセットです。
CのN値(メモリが制限されているため)があり、N + 1回反復する場合、Cに対して同じ値を少なくとも2回ヒットします。2N + 1回反復すると、Cに対して同じ値が少なくとも3回ヒットします。
T =(Ct、S1t、S2t)を特定の状態(現在の値と他の状態)とします。
M =#{S1の値} X {S2の値} X {...}を可能な状態の組み合わせの基数とします(再び:メモリが制限されているため)。
アルゴリズムをNM + 1回反復すると、同じ状態(Ct、S1t、S2t、...)の少なくとも2倍に達するため、最初と同じ出力値と同じ状態シーケンスが生成されます。定期的になります。
周期的ではない擬似ランダムシーケンスの簡単な例:すべての正の整数のバイナリ表現を順番に連結します。
110111001011101111000...
(「。」を追加します。これは、バイナリチャンペルノーン定数と呼ばれます。)
もちろん、これは疑似ランダムシーケンスに関する限り、それほど高品質ではありませんが、多くのメモリを使用しなくても可能であることを示しています。
この例では、状態を保存するために必要なメモリは理論的に無制限です。ただし、(たとえば、または数字を計算するために必要なメモリと比較して)非常にゆっくりと成長します。同様に、各ビットを生成するのに必要な時間。√
制限のないメモリ要件はチューリングマシンにとっては問題ではなく、成長も非常に遅いため、実際にはおそらく問題ではありませんが、これを使用する目的によって異なります。
たとえば、実際にビットを順番に生成するだけであれば、宇宙の寿命の間にメモリを使い果たすことなく、実際のコンピューターでこの非周期的なシーケンスの任意の多くのビットを簡単に任意に生成できます。ただし、そのユースケースでは、非周期性は単にような非常に大きな周期を持っている以上の利点はありません。したがって、「通常の」使用法の観点からはそれほど違いはありません。
差別化要因は、PRNGから他のPRNGを導出するようなことをしたい場合、たとえば、定期的にサブシーケンスを取得することです。非周期PRNGで開始すると、サンプリングする周期に関係なく非周期結果が得られますが、周期 PRNGで開始すると、サンプリング周期が十分に大きい。