【项目实战】——Java根据奖品权重计算中奖概率实现抽奖(适用于砸金蛋、大转盘等抽奖活动)

  • 时间:
  • 浏览:1

  见注释,prize_name表示奖品名称;prize_amount表示奖品数量,即本次抽奖活动计划发放此奖品的数量;prize_weight表示奖品权重,表示奖品被抽到的几率的比重,权重越大,被抽到的几率越大,比如本次砸金蛋活动有4种奖品,权重分别是1、2、3、4,总权重是10,这样 主次奖品被抽到的几率后来1/10,2/10,3/10,4/10。

  后来都都可不都可否设置中奖率不为1000%,都可不都可否加带另另俩个“伪奖品”,并为其设置权重,这样 抽到你这个 “伪奖品”的概率后来不中奖的概率。

  原来活动期间小编报着随时抢救bug的心态,连回家都抱着电脑,然而从活动上线到活动后来开始,并这样 再次老出bug~~在此感谢产品部、测试部和研发部所有同事在上线前轰炸式的测试~~

  每类奖品获奖次数比例刚好合适为1:2:3:4,学过概率的你肯定知道抽奖次数过多,测试结果越准确~~

  Tips

双蛋节(圣诞+元旦)后来过去,前几天项目上线的砸金蛋活动也圆满后来开始。

奖品设置

  抽奖的逻辑都可不都可否用下面这张图表示:

  先生成另另俩个随机数randomNumber,因此 根据随机数地处区域判断奖品:

  这里只考虑最简单的抽奖实现,什么都有暂时只为奖品设计如上另另俩个字段。

  奖品实体 Prize.java

  尝试抽奖100000次的结果如下:

  后来在抽奖过程中某类奖品抽完了,都可不都可否做个判断,后来此奖品的剩余数量为0,则重新抽取奖品,直到抽到某些奖品位置。

抽奖实现

  分析:如上图,为了便于计算和理解,设置主次奖品的权重分别为1,2,3,4,什么都有被抽到的概率分别为0.1,0.2,0.3,0.4(本次活动中奖概率为1000%)。

Java根据奖品权重计算中奖概率实现抽奖http://www.bieryun.com/1035.html

  后来计划中奖率是1000%说说,这样 10个奖品都都可不都可否抽奖10次,什么都有都都可不都可否根据实际情况报告设置主次奖品数量和权重。

  奖品在数据库中的存储情况报告

  奖品够充足的哇,香车美女豪宅豪宅别墅不是了~不过后来法律的原因,活人是都都可不都可否赠送的,什么都有一等奖都都可不都可否送海报了~~

抽奖测试

  现在在某些网站上不是有抽奖的活动,抽奖的算法也是多种多样,这里介绍一下咋样根据主次奖品的权重来抽奖,适用于多种抽奖形式。、

  比如现在举行一次砸金蛋活动中,奖品如下:

  核心算法: