PRNGの特性

PRNGは、「ランダムな」物理ソースではなく、アルゴリズムに基づいて値のシーケンスを生成するため、このシーケンスは最終的に再起動されます。PRNGが再起動する前に生成する値の数は、周期と呼ばれます。

PRNGの状態サイクルは、PRNGが生成可能なすべての値のシーケンスで構成されます。PRNGの状態とは、その状態サイクルの中で最後に生成された値の位置です。

一般に、値を生成する際に、PRNGは以前に生成された値を基にしています。ただし、一部のPRNGは、中間値を計算せずに、シーケンスのさらに先の多くの値を生成できるものもあります。これらは、値のシーケンスのはるか先にジャンプすることができるため、ジャンプ可能なPRNGと呼ばれます。通常は、264という一定の距離だけジャンプします。リープ可能なPRNGはさらにジャンプすることができ、通常の値は2128です。任意でジャンプ可能なPRNGは、生成された値のシーケンス内の任意の値にジャンプできます。

java.util.Randomクラスと他のPRNGとの比較

java.util.random.RandomGeneratorFactoryクラスを使用すると、様々なPRNGを作成できますが、その多くは、jdk.randomパッケージに含まれています。jdk.randomに含まれるPRNGとjava.util.Randomクラスの最も大きな違いは、Randomの周期が非常に短く、248の値しかないことです。