java 大转盘摇奖算法

来源:互联网 发布:mac os x语言 编辑:程序博客网 时间:2024/04/30 04:31

自己写的一个类似sina大转盘摇奖活动的后台java端中奖算法,大家看看有什么不对,欢迎指正。 


说明: 

@params list 放的是奖品ID,奖品等级,中奖概率(最小支持 0.0001% ,即百万分之一) 

返回中奖等级:中了几等奖 


/**  * 积分抽奖算法  *   * @param list  * @return  */  private int getGameWinningLevel(List<giftDetailModel> list) {        // 中奖等级:未中奖      int winningLevel = -1;        if (list == null || list.size() <= 0) {          return winningLevel;      }        // 中奖随机号      int randomWinningNo = 0;      int args[] = new int[list.size() * 2];      int temp = (int) Math.round(Math.random() * 1000000000) % 1000000;      int j = 0;        for (int i = 0; i < list.size(); i++) {            double tmpWinningPro = list.get(i).getWinningPro();            if (j == 0) {              args[j] = randomWinningNo;          } else {              args[j] = args[j - 1] + 1;          }          args[j + 1] = args[j] + (int) Math.round(tmpWinningPro * 10000) - 1;            if (temp >= args[j] && temp <= args[j + 1]) {              return  i + 1;          }          j += 2;      }      return winningLevel;  }  


原创粉丝点击