我正在創建一個方法,如果您傳入Random類型的參數,那麼它將返回一個隨機對象。這基本上就是我想要做的事:從ArrayList中抓取隨機對象不是隨機的
public T choose(Random r) {
int randomInt = r.nextInt(randomList.size()); // randomList is just a instance variable
return randomList.get(randomInt);
}
隨機列表中有下面這樣的字符串:[2, 2, 2, 1, 1, 1, 1, c, c, c, a, a, a, a]
然後我做了下面的代碼驅動程序
for (int i = 0; i < 10; i++) {
System.out.print(rndList.choose(rnd)); // rnd is initialized as a static Random variable
}
但是我的輸出不是隨機出現的。我使用調試器,發現我的選擇方法會生成一個相對較低的整數,所以它總是會輸出2或1,但不會輸出c或a。我無法弄清楚爲什麼會發生這種情況,不勝感激。
編輯:問題解決了。我遺漏了很多細節,但是當我調用size()方法時,這是我重寫的錯誤,它會返回比我想要的更小的數字。感謝dtech注意到我愚蠢的錯誤。感謝所有試圖幫助我的人!
你試過運行它'50'次的例子嗎? – 2011-03-06 16:10:57
另外,你是如何構建你的隨機數發生器?用Random()或Random(someConstantIntegerValue)'?如果使用後者,請注意每次運行程序時都會得到相同的「隨機」序列。 – 2011-03-06 16:14:00
您可以創建一個完整的可運行測試程序嗎?看起來你的錯誤不在你在這裏發佈的代碼之外。 – 2011-03-06 16:17:07