
Java:数値の範囲を指定した乱数の出し方
※自分用学習メモです
Javaで指定した範囲の乱数を生成するためには、java.util.Random クラスや Math.random() メソッドを使うことができます。ここでは両方の方法を紹介します。
1. java.util.Random クラスを使う方法
例: 1から100までの範囲で乱数を生成する場合
import java.util.Random;
public class RandomNumberExample {
public static void main(String[] args) {
Random random = new Random();
int min = 1;
int max = 100;
// minからmaxまでの範囲の乱数を生成
int randomNumber = random.nextInt((max - min) + 1) + min;
System.out.println("ランダムな数値: " + randomNumber);
}
}
Random クラスを使った乱数生成の仕組み:
random.nextInt((max - min) + 1) + min; の部分で、min から max までの乱数を生成します。
nextInt(bound) は、0 から bound-1 までの整数を生成するため、範囲を調整するために (max - min) + 1 を使っています。
さらに + min で、生成された乱数が min 以上の値になるように調整しています。
2. Math.random() メソッドを使う方法
例: 1から100までの範囲で乱数を生成する場合
public class RandomNumberExample {
public static void main(String[] args) {
int min = 1;
int max = 100;
// minからmaxまでの範囲の乱数を生成
int randomNumber = (int)(Math.random() * (max - min + 1)) + min;
System.out.println("ランダムな数値: " + randomNumber);
}
}
Math.random() を使った乱数生成の仕組み:
Math.random() は、0.0 から 1.0 未満のランダムな小数を生成します。
Math.random() * (max - min + 1) により、min から max までの範囲の乱数が得られるようにスケーリングします。
その結果を (int) でキャストして、小数点を切り捨て、整数を生成しています。
まとめ
Random クラスは、もう少し高機能な乱数生成が可能で、特定のシード値を指定して再現性のある乱数生成ができます。
Math.random() は手軽に乱数を生成したいときに便利です。
どちらの方法も、指定した範囲内の乱数を生成するのに有効です。