int[] integers = new int[12];
Random r = new Random();
for (int i = 0; i < integers.length; i++) {
integers[i] = r.nextInt((10 - (-10) + 1) + (-10));
}
我正在使用 online compiler 执行它它会随机抛出错误。
谁能帮我解决这个问题吗?我不知道如何写一半是消极的,一半是积极的。并且该随机数不能为 0
最佳答案
首先,要生成-10到10之间的数字,正确的代码是:
integers[i] = r.nextInt(21)-10;
r.nextInt(21)
将生成 0 到 20 之间的数字,因此减去 10 即可得到所需的范围。
现在,您必须验证生成的随机数,以确保不会生成太多正数或负数,并且没有零。
int posCount=0;
int negCount=0;
for (int i = 0; i < integers.length; i++) {
integers[i] = r.nextInt(21)-10;
if (integers[i]>0)
posCount++;
else if (integers[i]<0)
negCount--;
if (posCount>6||negCount>6||integers[i]==0)
i--; // redo the current iteration of the loop, since the last generated
// number should be replaced
}
另一种运行速度更快的替代方法是先生成 6 个正整数 (r.nextInt(10)+1
),然后生成 6 个负整数 (-1-r.nextInt(10)
),但我不确定生成的数字的顺序是否重要(即所有正数都在所有负数之前是否可以接受)。
关于java - 数组中的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34380983/