1. ホーム
  2. java

[解決済み] Math.random()の説明

2022-06-16 17:48:10

質問

これは非常に簡単なJavaの問題です(おそらくすべてのプログラミングに適用可能ですが)。

Math.random() は0から1までの数値を返します。

0から100までの整数を返したい場合は、こうします。

(int) Math.floor(Math.random() * 101)

一と百の間、私ならそうする。

(int) Math.ceil(Math.random() * 100)

しかし、3から5までの数字を取得したい場合はどうでしょうか?次のような記述になるのでしょうか。

(int) Math.random() * 5 + 3

について知っている nextInt()java.lang.util.Random . しかし、私はこの方法を Math.random() .

どのように解決するのですか?

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 よりも小さくなければなりません。

EDITです。 もし、誰かがバカなことをしようとして、逆に minmax に変更することができます。

int randomWithRange(int min, int max)
{
   int range = Math.abs(max - min) + 1;     
   return (int)(Math.random() * range) + (min <= max ? min : max);
}

EDIT2です。 についてのご質問ですが 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);
}