Math.random() の説明 質問する

Math.random() の説明 質問する

これは非常に単純な 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

編集:もし誰かが愚かにも と を逆にしようとしたらminmaxコードを次のように変更できます。

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);
}

おすすめ記事