Javaで乱数を取得する

2011年05月05日に質問されました。  ·  閲覧回数 2.3M回  ·  ソース

Unknown user picture
2011年05月05日

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

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

Math.random()が返す値をバインドするにはどうすればよいですか?

回答

nyanev picture
2011年05月05日
782

最初の解決策は、 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);
zengr picture
2011年05月05日
607
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ランダムの素晴らしさの