「Javaで乱数を生成する」というタイトルだが、生成できるのは疑似乱数だ。今日は「Javaで乱数を生成する(1)」で説明した「疑似乱数生成器がどのように疑似乱数を生成するのか」について、Javaではどのように実装すればよいか説明する。 Javaでは、疑似乱数生成器として“java.util.Random”と“java.security.SecureRandom”が用意されている(SecureRandomクラスはRandomクラスのサブクラス)。 Randomクラスは、線形合同法*1を用いており、出力された値から内部状態が推測可能(次に出力される値が推測可能)な疑似乱数生成器である。なので、セキュリティ用途では使えない。 SecureRandomクラスは、内部でハッシュ演算を行っており、出力された値から内部状態が推測困難な疑似乱数生成器である。セキュリティ用途では、こちらを用いなければならな

