皆さん始めまして、ゼネットの小野塚です。
私は現在Javaの研修を受けているのですが、研修中についつい忘れてしまうJavaで少数の乱数を生成する方法について記述していきます。
0~nの範囲で少数の乱数を生成する方法
import java.util.Random; public class Sample { public static void main(String[] args) { //○○には正の整数を代入してください。 int n = ○○; //importしたRandomクラスを使用する。 Random random = new Random(); /* *メソッドnextDouble()では0~1のランダムな少数を生成することができる。 *ここでnextDouble()に求めたい少数の乱数範囲であるnを乗算する。 *nextDouble()*nは元の範囲にnを乗算するので0~nの範囲でランダムな少数を生成することができる。 */ double number = random.nextDouble() * n; //生成した乱数をコンソールに出力する。 System.out.println(number); } }
解説.
上記のように記述することで0~nの範囲で少数の乱数を生成できます。今回のコードで一番覚えてほしいことは、nextDouble()メソッドは0~1の範囲で少数の乱数を生成し、これにnを乗算することで範囲を0~nに変えることができるということです。試しに範囲が0~3の場合でコードを記述し実行してみたいと思います。
例. 0~3の範囲で少数の乱数を生成する方法
import java.util.Random; public class Sample { public static void main(String[] args) { int n = 3; Random random = new Random(); //生成した乱数を確認のためコンソールに出力する。 for(int i = 0; i < 10; i++) { double number = random.nextDouble() * n; System.out.println("number = "+number); } } }
上記のコードを実行した結果は以下のようになります。
number = 1.6561121496721563 number = 0.16663784924932834 number = 1.9702597947771134 number = 1.6397226476489655 number = 1.6170923440641378 number = 2.902650883877948 number = 1.3728498874549482 number = 0.41731004043200415 number = 0.00806840776610751 number = 0.46847089350652527
以上より0~3の範囲で正常に乱数が生成されていることが確認できました。また乱数を生成する際に、範囲の境界値であるnの値に負数を代入し、任意のマイナスの範囲で乱数を生成することもできるのでぜひ活用してみて下さい。
まとめ
私はコードの書き方、使い方をすぐに忘れてしまうので、同じようにすでに学習したが忘れてしまった方や、始めて学習し乱数の生成方法を探している方などの参考になれば幸いです。