num1,num2是随机数的边界,但如果num1大于num2,我希望结果为0。
int num1 = 5
int num2 = 1
int num3 = 10
Random rand = new Random();
double num = 0;
for (int i = 0; i < num3; i++) {
int randNum = rand.nextInt((num2 - num1) + 1) + num1;
num = num + randNum;
// Adds the random number generated to num until it reaches the
// max amount of numbers generated.
}
num = num / num3;
if (num3 < 1 || num2 < num1){
return 0;
} else {
return num;
}
我认为最后一个if语句会起作用,但它一直给我一个错误,说明随机数不能为负数。
如果解决方案可能有点简单,因为我只是刚开始使用Java
非常感谢任何帮助,谢谢
答案 0 :(得分:3)
因为(根据Javadocs)
public int nextInt(int n)
参数:n - 要返回的随机数的界限。一定是 的阳性即可。返回:下一个伪随机数,均匀分布的int 该随机数的0(含)和n(不包括)之间的值 生成器的序列抛出: IllegalArgumentException - 如果n不是 阳性
返回伪随机,均匀分布的int值介于0(包括)和指定值(不包括)
之间所以你需要先检查(num2 - num1) > 0
答案 1 :(得分:1)
您可以先通过num1到num2的比较来简化它,如果num1更大,则不要乱用任何数学。
将其移至顶部:
if (num3 < 1 || num2 < num1){
return 0;
再看一下你的代码,当num3增加时,你的结果会接近(num2-num1)/ 2。只是想知道你在这做什么?
答案 2 :(得分:-1)
您没有使用num1和num2作为边界。如果应该是
randNum = rand.nextInt(num1, num2);
也是你的条件
if(num1 > num2)
应该是你方法中的第一个。