【问题标题】:Why is this Math.random() statement set out in this format?为什么这个 Math.random() 语句以这种格式列出?
【发布时间】:2017-10-29 10:48:51
【问题描述】:

我完全是 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;

感谢您的帮助!!

【问题讨论】:

  • 如果这里的任何答案有帮助,您可能希望接受他们的解决方案。除非您的问题仍未解决,否则您可以发表评论。

标签: java random


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    (MAX + 1 - MIN) 相乘、转换为intMIN 相加将生成的double 转换为int 之间的int13

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多