有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么这是数学。以这种格式列出的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;

谢谢你的帮助


共 (2) 个答案

  1. # 1 楼答案

    Math.random()生成介于0(包括)和1(排除)之间的double数字

    通过(MAX + 1 - MIN)的乘法、对int的强制转换和MIN的加法将生成的double转换为13之间的int

  2. # 2 楼答案

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