说我有一个百分比列表:
列出百分比= {52.3,7.7,20.0,20.0};
我怎样才能根据百分比选择其中一种呢?例如,指数0(52.3)有52.3%的机会被选中,而指数2和指数3都有20%被选中的机会。
提前致谢!
(我需要能够访问所选值的索引)
答案 0 :(得分:0)
import java.util.Random;
public class HelloWorld{
public static void main(String []args){
Double[] percentages = {52.3, 7.7, 20.0, 20.0};
int index = pickRandom(percentages);
System.out.println(index);
}
public static int pickRandom(Double[] list) {
// Returns random index of list
Random r = new Random();
Double randomPercentage = r.nextDouble() * 100;
double sum = 0;
int index = 0;
for(Double d : list) {
sum += d;
if(sum > randomPercentage) {
return index;
}
index += 1;
}
return index;
}
}
让我们分解这里发生的事情。你为pickRandom()提供了一个双打数组。我们创建一个Random对象来生成0到100之间的随机值(randomPercentage)。然后我们遍历列表对元素求和,直到我们超过randomPercentage并返回我们所在的索引。