これはかなり単純な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()
。
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);
}
EDIT2:double
s についての質問は、次のとおりです。
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);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加