/ /なぜこのMath.random()ステートメントがこの形式で設定されているのですか? -java、ランダム

なぜこのMath.random()文がこの形式で記述されていますか? - java、random

私はJavaの完全な初心者なので、ごめんなさいおそらく非常に愚かな質問です。これは、2つの乱数を推測するためのプログラムです。 Math.randomの後に「*(MAX + 1-MIN)))+ MIN;」が続くのはなぜですか。また、Math.randomは1から3までの数値を生成し、それ以上の数値を生成しないことをどのように知っていますか?

  Scanner scan = new Scanner(System.in);
final int MIN = 1, MAX = 3;
int firstAnswer = ((int)(Math.random() * (MAX + 1 - MIN))) + MIN;
int secondAnswer = ((int)(Math.random() * (MAX + 1 - MIN))) + MIN;
int firstGuess, secondGuess;

ご協力いただきありがとうございます!!

回答:

回答№1は5

Math.random() 〜を生成する double 範囲[0、1)。 (3 + 1-1)を掛けてintにキャストすると、範囲[0、3)の数値が得られます。番号が int、それは範囲[0、2]にあることを意味します。1と合計すると、範囲[1、3]の整数、つまり1、2、または3が得られます。


回答№2については2

Math.random() 〜を生成する double 0(包括的)から1(排他的)までの数値。

乗算 (MAX + 1 - MIN)、にキャスト int の追加 MIN 生成されたものを変換する double 〜に int 間の値 1 そして 3.