可能な重複:
Java:ある範囲内で乱数を生成する
Javaで1から50の間のランダムな値を取得したいのですが。
どのように私はMath.random();
の助けを借りてそれを行うことができますか?
Math.random()
が返す値をどうやって束縛するのですか?
最初の解決策はJava.util.Random
クラスを使うことです。
import Java.util.Random;
Random Rand = new Random();
// Obtain a number between [0 - 49].
int n = Rand.nextInt(50);
// Add 1 to the result to get a number from the required range
// (i.e., [1 - 50]).
n += 1;
別の解決策はMath.random()
を使うことです。
double random = Math.random() * 49 + 1;
または
int random = (int)(Math.random() * 50 + 1);
int max = 50;
int min = 1;
double random = Math.random() * 49 + 1;
or
int random = (int )(Math.random() * 50 + 1);
これにより、intの場合は1から50、doubleの場合は1.0(両端を含む)から50.0(排他的)までの値が得られます。
どうして?
random()メソッドは0.0〜0.9の乱数を返します。50を掛けると、上限は0.0〜49.999になります。1を加えると1.0〜50.999になります。 intにすると、1から50になります。(コメントの@rupのおかげで) leepointの 両方のアプローチに関する素晴らしい記事。
Random Rand = new Random();
int value = Rand.nextInt(50);
これは0から49までの値を与えます。
1から50の場合:Rand.nextInt((max - min) + 1) + min;