通过概率实现抽奖的算法

该算法是通过概率获取相应奖品的简单算法

/**

* List<Prize> :奖品信息集合

*/

public static int randomInt(List<Prize> prize) {

      int randomNum = new Random().nextInt(100) + 1;

     //定义一个集合用来存储每个奖品的概率或者说权重,概率或者权重用1到100之间的数来表示

     List<Integer> prize_weights = new ArrayList<Integer>();

      //初始化prize_weights
      for(Prize p:prize){
        String prize_weight = p.getPrize_weight();
        int e =(int) Double.parseDouble(prize_weight);
        prize_weights.add(e);
      }
      int pri = 0;//奖品级数(几等奖)
      int num = 0; //存中奖概率数
      int num2 = 1;//存中奖概率数
      for (Integer i : prize_weights) {         
                  num += i;   
                  if (i >= 1) {       
                      if (randomNum >= num2 && randomNum <= num) {   
                          return pri;    
                      }   
                  }
                  pri++; //奖级加一
                  num2 += i;
              }
              return pri;

    }


参考算法:http://blog.csdn.net/huyuyang6688/article/details/50480687


扫描二维码关注公众号,回复: 2754180 查看本文章


猜你喜欢

转载自blog.csdn.net/weixin_40655220/article/details/79125506