抽奖概率
Posted tinya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽奖概率相关的知识,希望对你有一定的参考价值。
/**
* 通过奖品列表中的概率抽取奖品
*
* @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;
}
以上是关于抽奖概率的主要内容,如果未能解决你的问题,请参考以下文章