我是Java的初学者,所以我很抱歉这可能是一个非常愚蠢的问题。这是一个猜测两个随机数的程序。为什么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;
感谢您的帮助!
答案 0 :(得分:4)
Math.random()
在范围[0,1]中生成double
。如果将它乘以(3 + 1-1),并将其转换为int,则得到范围[0,3]中的数字。由于该数字现在是int
,这意味着它在范围[0,2]中。如果将其与1相加,则得到范围[1,3]中的整数,即1,2或3。
答案 1 :(得分:2)
Math.random()
生成介于0(含)和1(独占)之间的double
个数字。
乘以(MAX + 1 - MIN)
,转换为int
并添加MIN
会将生成的double
转换为int
之间的1
值3
。