乱数を発生させるために、私は公式を使用しました。
(int)(Math.random() * max) + min`。
Googleで検索すると、いつもこのような計算式が出てきます。
(int)(Math.random() * (max - min) + min)`となります。
どれが正しいのでしょうか?私の知る限り、私の計算式で範囲外の数字を得たことはありません。
もっと良い方法は
int x = rand.nextInt(max - min + 1) + min;
あなたの計算式は、min
からmin + max
の間の数値を生成します。
Random random = new Random(1234567);
int min = 5;
int max = 20;
while (true) {
int x = (int)(Math.random() * max) + min;
System.out.println(x);
if (x < min || x >= max) { break; }
}
結果です。
10
16
13
21 // Oops!!
オンラインではこちらをご覧ください。[ideone][1]