web-dev-qa-db-ja.com

1〜10のJavaの乱数を生成する

私はJavaで1から10までの数を生成したいです。

これが私が試したものです:

Random rn = new Random();
int answer = rn.nextInt(10) + 1;

NextIntメソッドを呼び出すときに()を括弧に入れて何を追加するのかを指示する方法はありますか?

151
Shania

ドキュメンテーション が言っているように、このメソッド呼び出しは "0(包括的)と指定された値(排他的)の間の擬似乱数、一様に分布したint値"を返します。これはあなたのケースでは0から9までの数字を取得することを意味します。それで、あなたはその数に1を加えることによってすべてを正しくしました。

一般的に言って、もしあなたがminからmax(両方を含む)までの数を生成する必要があるならば、あなたは書く

random.nextInt(max - min + 1) + min
217
Malcolm

これを行うための標準的な方法は次のとおりです。

提供する:

  • 最小値
  • 最大値

そして、最小値と最大値の間の整数を返します。

Random Rand = new Random();

// nextInt as provided by Random is exclusive of the top value so you need to add 1 

int randomNum = Rand.nextInt((max - min) + 1) + min;

関連する JavaDoc を参照してください。

Aurundが説明したように、互いに短時間で作成されたRandomオブジェクトは同様の出力を生成する傾向があるため、作成されたRandomオブジェクトをメソッドではなくフィールドとして保持することをお勧めします。

70
Scary Wombat

これは1から10の数字を生成するのに役立ちます。コードの先頭にRandomをインポートしてください。

import Java.util.Random;

テストしたい場合は、このようなことを試してください。

Random rn = new Random();

for(int i =0; i < 100; i++)
{
    int answer = rn.nextInt(10) + 1;
    System.out.println(answer);
}

また、括弧内の数字を変更すると、0からその数字-1までのランダムな数字が作成されます(もちろん、自分で追加しない限り、1から入力した数字まで)。

17
Demosthanes