擬似乱数発生器(PRNG)は決定論的数学的アルゴリズムを使い、統計的に良質な特性を持つ数列を生成する。しかし、生成される数列は完全な乱数ではない。PRNG は通常、数学的なシード(seed)に基づいて乱数の生成を開始する。アルゴリズムはこのシードを使って出力する値と新しいシードを生成し、次にそのシードを用いて次の値を生成するという具合である。 Javaの標準API java.util.Random クラスは PRNG の機能を提供する。この PRNG は可搬性があり、かつ再現性がある。したがって、同一のシードを使って生成された java.util.Random クラスの2つのインスタンスは、すべてのJava実行環境においてまったく同じ数列を生成する。シードは、アプリケーションの初期化やシステムの再起動の度に再利用されることが多い。システム時計から取得した現在時刻をシードにする場合もある。攻
![MSC02-J. 高品質の乱数を生成する](https://cdn-ak-scissors.b.st-hatena.com/image/square/7dd958779816f7e1a8006230cb8f8f321ee39ab8/height=288;version=1;width=512/https%3A%2F%2Fwww.jpcert.or.jp%2Fcommon%2Fimage%2Fogp_image.jpg)