int numberTrue=0; //adjust this in your other code accordingly
Random r = new Random();
int rand = r.nextInt (24);
// loop until not true found or stop if all items are true
while (array [rand] && numberTrue < 24) {
rand = r.nextInt (24);
count++;
}
我思考了一下,沒有在這裏知道你的代碼是一對夫婦的建議,以避免無限循環時,他們都是真實的(假設條件存在):
1.保持(此調整的例子)
2.存儲的真正指標的第二陣列,在對方的回答
首先提出多少真正的設置數量大概是最簡單的實現(加入numberTrue++;
和numberTrue--;
在適當的代碼點) - 只是在這裏注意,如果它是不可能保持這個計數,你可以通過在你的數組上運行一個initial循環並計算true元素的數量來達到同樣的效果。
第二種方法適合以利用來自其他職位的答案之一:
public int generateRandom(int start, int end, ArrayList<Integer> excludeRows) {
Random rand = new Random();
int range = end - start + 1;
int random = rand.nextInt(range) + 1;
while(excludeRows.contains(random)) {
random = rand.nextInt(range) + 1;
}
return random;
}
(我相信他們的代碼實際上應rand.nextInt(range) + start
所以,你可以運行:
if (trueIndexes.length < 24) {
generateRandom(0, 23, trueIndexes);
}
來源
2014-02-21 00:48:47
Tim
僞代碼 - 'do(獲取隨機數組元素)while (random element == true)' – csmckelvey