根据百分比选择列表的索引

时间:2018-03-08 20:35:57

标签: java random percentage

说我有一个百分比列表:

列出百分比= {52.3,7.7,20.0,20.0};

我怎样才能根据百分比选择其中一种呢?例如,指数0(52.3)有52.3%的机会被选中,而指数2和指数3都有20%被选中的机会。

提前致谢!

(我需要能够访问所选值的索引)

1 个答案:

答案 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并返回我们所在的索引。