码迷,mamicode.com
首页 > 其他好文 > 详细

抽奖概率

时间:2018-11-22 17:07:36      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:set   package   pack   double   ftp   计算   gif   mat   +=   

/**
* 通过奖品列表中的概率抽取奖品
*
* @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;
}

抽奖概率

标签:set   package   pack   double   ftp   计算   gif   mat   +=   

原文地址:https://www.cnblogs.com/tinya/p/10001858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!