rand.nextInt(9-5)
不会计算 5 到 8 之间的随机数,它会使操作 9 减去 5 然后计算rand.nextInt(4)
.
要计算 5 到 8 之间的随机数,您必须执行以下操作:
Random r = new Random();
for (int i = 0; i < 10; i++) {
int rand1 = r.nextInt(4) + 5;
int rand2 = r.nextInt(4) + 5;
int result = rand1 + rand2;
Log.v("", "" + result);
}
问题是结果不能小于 9,因为您将两个数字相加 => 5,因此您可以获得的较低结果是 10。
编辑一个没有重复的解决方案:
private List<Integer> rdmNumList = new ArrayList<Integer>();
private final int leftLimitRange = 1;
private final int rightLimitRange = 10;
private final int numOfIteration = 10;
public void generateNumList() {
for (int i = leftLimitRange; i <= rightLimitRange; i++) {
this.rdmNumList.add(num);
}
}
public int getRandomNumer() {
Random r = new Random();
int rNum = r.nextInt(rdmNumList.size());
int result = this.rdmNumList.get(rNum);
this.rdmNumList.remove(rNum);
return result;
}
public void test() {
this.generateNumList();
if(this.numOfIteration <= ((this.rightLimitRange - this.leftLimitRange + 1))) {
for (int i = 0; i < this.numOfIteration; i++) {
Log.v("Debug Output", String.valueOf(this.getRandomNumer()));
}
}
}
注意:这仅在小范围内有效
此代码有效,但远非良好。您应该自己找到其他解决方案。这个答案将帮助您找到自己的方式