2016-08-25 8 views
-2

私は、Javaの設計者は、このような乱数を返すためにjava.util.Randomのオブジェクトを設計しなかった理由がわからない:java.util.Randomの範囲を指定する方法は?

rand.nextInt(minValue, maxValue);

私はこれまで最小値と最大値を渡す方法を理解していません関数。私はこれがお勧め見てきました:

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

それが何を意味するのでしょうか?私は間-1と1の値を生成したい場合、たとえば、

random.nextInt(FULL_RANGE + 1) + START_OF_RANGE

含めて、私はそれを行う方法このです:それどういう意味

int oneOfThreeChoices = rand.nextInt(1 + 1 + 1) - 1;

+0

「その意味は何ですか?」:「最大 - 最小+1」は範囲のサイズです。例えば、[1、4]の範囲の値が必要な場合は、4つの異なる値(1,2,3,4)が必要です。つまり、 '4 - 1 + 1'です。今度はnextIntへの引数が排他的なので、4を渡したいと思います。これは{0,1,2,3}の値を取得しますので、 {1、2、3、4}の値を得る。 – yshavit

+0

改造者によってリンクされている答えははるかに複雑な質問です。一番の答えは無関係です。それはどのように役立つのですか?それは私を助けません。 –

+0

どのように関係がありませんか?あなたが知る限り、あなたの質問は基本的に "どのように私は与えられた最小/最大範囲でランダムなintを生成するのですか?"それがあなたの質問であれば、リンクされた複写はそれに答えます、そして、私のコメントはそれを例で少し説明します。それはあなたの質問ではない、何ですか? – yshavit

答えて

3

APIが十分提供このタスクを完了するためのツール。あなたが範囲のランダムな整数をしたい場合は、[a、b]は、両端の包括的、randomが以前のタイプjava.util.Randomであると宣言されたオブジェクトであると仮定し

int n = random.nextInt(b-a+1) + a 

を使用しています。

1

random.nextInt(bound)は、0からbound(排他的)までの乱数を返します。 Javaの設計者はJDKに、より便利なAPIが含まれていないのはなぜたとえば、あなたが5から15までの数を返したい場合は(包括的)だから、0から9

random.nextInt(10)戻り乱数が、ちょうど

random.nextInt(11) + 5 

を言います?ここで説明されている方法はかなりシンプルで明白なので、私は思う。

関連する問題