抽奖概率

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;
}






































以上是关于抽奖概率的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现刮刮卡,大转盘抽奖概率,其实很简单!

抽奖概率

不同概率的抽奖

搜集的抽奖概率算法

中奖的概率是1%,则抽奖100次中奖的几率是多少

多件商品根据概率抽奖