我有一个数组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'? –