私が理解しているように、擬似ランダムアクティビティを実行できるJavaの主なクラスは、Random
クラスとクラスの2つです。どちらも擬似乱数を生成します。ただし、SecureRandom
クラスは暗号で安全な番号を生成します。SecureRandomクラスを使用できるときにJavaのランダムクラスを使用する理由は?
クラスを使用することができるときに、なぜRandom
クラスを使用すると、予測できない数値が生成されるのでしょうか?多くのプログラマ(特にビデオゲームプログラマ)はRandom
クラスのみを使用しますが、どちらのクラスもほとんど同じコアメソッドを持っています(どちらも擬似乱数を生成できます)。どちらのクラスも長い値でシードすることができます。
私の唯一の説明はRandom
クラスがSecureRandom
クラスよりも速く動作するということです。これは本当ですか?そうでなければ、なぜ多くのJavaプログラマはクラスよりもRandom
クラスを好むのですか?
[で開始するにはシードのため、常に同じ結果が(あなたも戦略を指定しない場合、デフォルトのSecureRandomは異なる場合があります): //docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html):* "[...]実装によっては、generateSeedおよびnextBytesメソッド**が**をエントロピーとしてブロックすることがあります集まっている[...] "*。また、「ランダム」は、決定論的なランダムシーケンスを提供し、おそらくほとんどの実装ではより高速です。 – aioobe