web-dev-qa-db-ja.com

Javaで乱数を取得する

可能な重複:
Java:ある範囲内で乱数を生成する

Javaで1から50の間のランダムな値を取得したいのですが。

どのように私はMath.random();の助けを借りてそれを行うことができますか?

Math.random()が返す値をどうやって束縛するのですか?

392
Unknown user

最初の解決策は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);
639
n_yanev
int max = 50;
int min = 1;

1.Math.random()を使う

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の 両方のアプローチに関する素晴らしい記事。

2. JavaでRandomクラスを使う。

Random Rand = new Random(); 
int value = Rand.nextInt(50); 

これは0から49までの値を与えます。

1から50の場合:Rand.nextInt((max - min) + 1) + min;

Java Randomの素晴らしさの情報源

571
zengr