1. 概要
このチュートリアルでは、範囲内で乱数を生成するさまざまな方法について説明します。
2. 範囲内の乱数の生成
2.1. Math.random
Math.random は、0.0以上1.0未満のランダムなdouble値を提供します。
Math.random メソッドを使用して、指定された範囲 [min、max)で乱数を生成してみましょう。
public int getRandomNumber(int min, int max) {
return (int) ((Math.random() * (max - min)) + min);
}
なぜそれが機能するのですか? Math.random が0.0を返すとどうなるか見てみましょう。これは、可能な限り低い出力です。
0.0 * (max - min) + min => min
したがって、取得できる最小の数値はminです。
1.0はMath.randomの排他的な上限であるため、次のようになります。
1.0 * (max - min) + min => max - min + min => max
したがって、メソッドの戻り値の排他的な上限はmaxです。
次のセクションでは、この同じパターンが Random#nextIntで繰り返されるのを確認します。
2.2. java .util.Random.nextInt
java.util.Randomのインスタンスを使用して同じことを行うこともできます。
java .util.Random.nextInt メソッドを使用して、乱数を取得しましょう。
public int getRandomNumberUsingNextInt(int min, int max) {
Random random = new Random();
return random.nextInt(max - min) + min;
}
min パラメーター(原点)は包括的ですが、上限maxは排他的です。
2.3. java .util.Random.ints
java.util.Random.ints メソッドは、ランダムな整数のIntStreamを返します。
したがって、 java.util.Random.ints メソッドを利用して、ランダムな数値を返すことができます。
public int getRandomNumberUsingInts(int min, int max) {
Random random = new Random();
return random.ints(min, max)
.findFirst()
.getAsInt();
}
ここでも、指定された原点 min は包括的であり、maxは排他的です。
3. 結論
この記事では、範囲内で乱数を生成する別の方法を見ました。
コードスニペットは、いつものように、GitHubのにあります。