我有一個數組char[] Select = {'A','B','C','D','E','F','G','H','I','J'}
,這個數組中的每個元素有不同的概率被選中。例如,Java的高概率隨機數
int[] Weight = {10,30,25,60,20,70,10,80,20,30};
我的要求是選擇從該陣列5層的元件和該元件具有高權重值具有較高的概率被選擇,並且這些5個元素應該是不同的。
我的計劃是第一總和的重量
int[] weightSum = {10, 40, 65, 125, 145, 215, 225, 305, 325, 355}
然後我使用隨機到[0355]的範圍內產生一個隨機數k
。然後查找weightSum[]
中大於k
的第一個元素。這個過程重複5次。
問題是高概率的元素可能被多次選擇。我嘗試在每次迭代中刪除重複的元素。重複項被刪除,但重量值較高的元素未被選中。
如何解決這個問題?
謝謝。
減去0你不應該尋找*最後*元素*更小*比'k'? –