Javaで範囲内の乱数を生成する

1. 概要

このチュートリアルでは、範囲内で乱数を生成するさまざまな方法を探ります。

2. 範囲内の乱数の生成

* 2.1。 Math.random *

_Math.random_は、0.0以上1.0未満のランダムな_double_値を提供します。
_Math.random_メソッドを使用して、指定された範囲の乱数を生成しましょう。
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._です
_Math.random_が1.0を返す場合、可能な最高の出力であり、次のようになります。
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_パラメータ(原点)は包括的ですが、whereas_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. 結論

この記事では、範囲内で乱数を生成する別の方法を説明しました。
コードスニペットは、いつものように、https://github.com/eugenp/tutorials/tree/master/java-numbers-2 [GitHubで]にあります。