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);
}
問題は、=> 5 である 2 つの数値を合計しているため、結果が < 9 にならないため、取得できる低い結果が 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()));
}
}
}
注:これは、数値の範囲が狭い場合にのみ効率的です
このコードは機能しますが、良いとは言えません。自分で他の解決策を見つける必要があります。この答えはあなたの道を見つけるのに役立ちます