Java乱数の生成

Javaで乱数を生成することは一般的なタスクです。たとえば、毎回ランダムな値でテストを実行したい場合があります。この投稿では、Javaで乱数を生成するさまざまな方法について説明します。



Javaで乱数を生成する方法

Javaでは、java.util.Randomを使用して乱数を生成できます。クラス。

Randomクラスをインポートすると、そこからオブジェクトを作成できます。これにより、乱数を使用できるようになります。


たとえば、メソッドnextInt()およびnextLong()それぞれintおよびlongデータ型の値(負および正)の範囲内にある数値を返します。



ランダムなInt、Long、およびBooleanの生成

import java.util.Random; public class GenerateRandomNumbers {
static Random rand;
public static void main(String[] args) {
rand = new Random();
System.out.println('Random integer: ' + rand.nextInt());
System.out.println('Random long: ' + rand.nextLong());
System.out.println('Random boolean: ' + rand.nextBoolean());
} }


範囲内の乱数の生成

場合によっては、特定の範囲から乱数を生成したいことがあります。 1から50の間。


これを行うには、nextInt()に整数パラメータを指定できます。方法。このパラメータは、範囲の上限を定義します。

ここで注意すべきことの1つは、生成される数値の1つに上限数が含まれていないことです。たとえば、nextInt(5)0から数値を生成します〜4包括的。

私たちも望むなら5乱数のリストに含めるには、nextInt(5)+1を使用する必要があります

import java.util.Random; public class GenerateRandomNumbers {
static Random rand;
public static void main(String[] args) {
rand = new Random();
int randInt = rand.nextInt(5) + 1;
System.out.println('Random integer: ' + randInt);
} }


Javaでの安全な乱数の生成

Randomクラスは、決定論的な方法で乱数を生成します。ランダム性を生成するアルゴリズムは、シードと呼ばれる数値に基づいています。シード番号がわかっている場合は、アルゴリズムから生成される番号を把握することができます。


SecureRandomの目標クラスは、暗号的に強い乱数を生成することです。

SecureRandom非決定論的な出力を生成する必要があります。したがって、シードマテリアルはSecureRandomに渡されますオブジェクトは予測不可能でなければなりません。

以下はSecureRandomの使用例ですJavaで乱数を生成するクラス

import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.SecureRandom; public class GenerateRandomNumbers {
static SecureRandom secureRandomGenerator;
public static void main(String[] args) {


try {

secureRandomGenerator = SecureRandom.getInstance('SHA1PRNG', 'SUN');
}

catch (NoSuchAlgorithmException | NoSuchProviderException e) {
}

//Get random integer in range
int randInRange = secureRandomGenerator.nextInt(499);
System.out.println(randInRange);
} }

上記の例は、Javaで乱数を生成する方法を示しています。


参照: 安全な乱数生成