使用 return 时 Math.random() 无法正常工作

laz*_*007 -3 java random math

我有一个程序,我想要一个对象返回两个数字之间的值。但问题是大多数时候,我得到的数字不在边界内。这是代码:

public int getSize() {
  int s = (int)Math.random() * (max - min) + min;
  return s;
}
Run Code Online (Sandbox Code Playgroud)

min 和 max 在代码中都定义为 320 和 640,但有时我得到的值低于我需要的值(例如我曾经得到 283),有时更高。有人可以帮忙吗?

NPE*_*NPE 5

283如果min/max320/ ,我不知道你怎么可能得到640

也就是说,您的代码中有一个错误会使其始终返回min. 要修复它,请使用以下命令:

int s = (int)(Math.random() * (max - min) + min);
Run Code Online (Sandbox Code Playgroud)

请注意添加的括号。没有它们,您将把结果转换为Math.random()to int。这总是给出零,使整个表达式的计算结果为min