抽奖几率

/** * 经过奖品列表中的几率抽取奖品 * * @param list * @return */private GiftPackageRule getPrize(List<GiftPackageRule> list) {    if (list == null || list.size() < 1) return null;    // 先计算全部中奖率的总和    double total = 0.0;    for (GiftPackageRule dpr : list) {        total += dpr.getProbability();    }    //若是几率小于100的话,增长一个不中奖的几率,去掉这行代码就是100%中奖    if (total < 100) {        GiftPackageRule giftPackageRule = new GiftPackageRule();        giftPackageRule.setProbability((int) (100 - total));        list.add(giftPackageRule);    }    // 获取一个表明中奖的随机值    double bingo = Math.random() * total;    // 判断这个中奖值落在哪一个奖品上    for (GiftPackageRule dpr : list) {        if (bingo < dpr.getProbability()) {            if (dpr.getGiftPackId() == null) {                return null;            } else {                return dpr;            }        } else {            bingo -= dpr.getProbability();        }    }    return null;}
相关文章
相关标签/搜索