Java 为什么这个Math.random()语句以这种格式列出?

Java 为什么这个Math.random()语句以这种格式列出?,java,random,Java,Random,我是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 +

我是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;
谢谢你的帮助

Math.random()
生成一个介于0(包括)和1(不包括)之间的
双精度
数字


(MAX+1-MIN)
相乘,转换为
int
,再加上
MIN
,将生成的
double
转换为
int
值,该值介于
1
3

Math.random()
生成[0,1]范围内的
double
。如果将其乘以(3+1-1),并将其转换为int,则得到范围[0,3]内的一个数字。由于该数字现在是
int
,这意味着它在范围[0,2]内。如果将其与1相加,则得到范围[1,3]内的一个整数,即1、2或3。

如果此处的任何答案有帮助,您可能希望接受他们的解决方案。除非您的问题仍未解决,否则您可以留下评论。