2017-10-29 7 views
3

私はJava初心者ですので、おそらく非常にばかげた質問です。これは、2つの乱数を推測するためのプログラムです。なぜMath.randomに "*(MAX + 1 - MIN)))+ MIN;"が続くのでしょうか?また、Math.randomは1と3の間の数値を生成することをどのように知っていますか?このMath.random()文がこの形式で設定されているのはなぜですか?

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; 

ありがとうございます!

+0

ここでの答えが役に立つ場合は、解決策を受け入れることができます。あなたの問題がまだ解決されていない限り、コメントを残すことができます。 – user3437460

答えて

2

Math.random()は、0以上(1を含まない)の間でdoubleの数値を生成します。

(MAX + 1 - MIN)による乗算、intにキャストし、MINの添加は13int値に生成されたdoubleを変換します。

5

Math.random()は、範囲[0,1]にdoubleを生成します。それを(3 + 1)で乗算してintにキャストすると、範囲[0、3]の数値が得られます。番号は今やintであるため、範囲[0、2]にあることを意味します。 1で合計すると、範囲[1、3]の整数が1,2,3のいずれかになります。

+0

@cppbeginnerありがとう、私は私の答えを更新しました – user2340612

関連する問題