为什么这是数学。以这种格式列出的random()语句?
我是Java的完全初学者,所以我很抱歉这可能是一个非常愚蠢的问题。这是一个猜测两个随机数的程序。为什么是数学。随机后跟“*(最大值+1-最小值))+MIN;”。还有数学是怎么做的。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 楼答案
Math.random()
生成介于0(包括)和1(排除)之间的double
数字通过
(MAX + 1 - MIN)
的乘法、对int
的强制转换和MIN
的加法将生成的double
转换为1
和3
之间的int
值# 2 楼答案
Math.random()
在[0,1]范围内生成一个double
。如果将其乘以(3+1-1),并将其转换为int,则得到范围[0,3]内的一个数字。由于该数字现在是一个int
,这意味着它在范围[0,2]内。如果将其与1相加,则得到[1,3]范围内的整数,即1,2或3