これは非常に単純な Java の質問です (ただし、おそらくすべてのプログラミングに当てはまります)。
Math.random()
0 から 1 までの数値を返します。
0 から 100 までの整数を返したい場合は、次のようにします。
(int) Math.floor(Math.random() * 101)
1 から 100 の間では、次のようにします。
(int) Math.ceil(Math.random() * 100)
しかし、3 から 5 までの数字を取得したい場合はどうすればよいでしょうか? 次のステートメントのようになります。
(int) Math.random() * 5 + 3
nextInt()
については知っていますjava.lang.util.Random
。しかし、 でこれを行う方法を知りたいですMath.random()
。
ベストアンサー1
int randomWithRange(int min, int max)
{
int range = (max - min) + 1;
return (int)(Math.random() * range) + min;
}
randomWithRange(2, 5)
10回の出力:
5
2
3
3
2
4
4
4
5
4
境界は包括的、つまり [2,5] であり、上記の例min
よりも小さくなければなりません。max
編集:もし誰かが愚かにも と を逆にしようとしたらmin
、max
コードを次のように変更できます。
int randomWithRange(int min, int max)
{
int range = Math.abs(max - min) + 1;
return (int)(Math.random() * range) + (min <= max ? min : max);
}
編集2:sに関するご質問についてはdouble
、次のとおりです。
double randomWithRange(double min, double max)
{
double range = (max - min);
return (Math.random() * range) + min;
}
また、これを誰でも簡単に理解できるようにしたい場合は、次のようにします。
double randomWithRange(double min, double max)
{
double range = Math.abs(max - min);
return (Math.random() * range) + (min <= max ? min : max);
}