1、奖项以及中奖概率设置

奖项数量如下(不同的奖项可以是相同的奖不影响结算的结果):

奖项一:100

奖项二:100

奖项三:100

奖项四:200

奖项五:500

设置总的中奖的概率为10%,不中奖的概率为90%,

抽奖的算法核心:现有一万个球,球的编号是1-10000,其中数字1-1000范围内的球代表的为中奖(1万乘以10%=1000 范围刚好是1-1000),1001-10000范围内的球不中奖(1万乘以90%=9000 范围刚好1001-10000),每次抽奖抽中的数字有两种可能:

1、1-1000中奖,

2、1001-10000不中奖,

若是结果2处理比较简单直接返回没中奖,若是结果1需要再计算会抽到哪一种奖项

2、中奖时计算会抽中哪一种奖项

总的中奖率设置为10%,不同奖项奖品总数:1000(若某奖项库存已空,则该奖项不参加抽中概率,同时其他奖项中奖概率计算用到的奖项总数=奖项总数-该奖项总数量),中奖时不同奖项的中奖率计算如下:

奖项一:100/1000=1000/10000

奖项二:100/1000=1000/10000

奖项三:1000/1000=1000/10000

奖项四:200/1000=2000/10000

奖项五:500/1000=5000/10000

 

现仍有一万个球,编号仍是1-10000,其中

编号1-1000(1000个球)对应奖项一抽中概率

编号1001-2000(1000个球)对应奖项二中奖概率

编号2001-3000(1000个球)对应的奖项三中奖概率

编号3001-5000(2000个球)对应奖项三中奖概率

编号5001-10000(6000个球)对应奖项四中奖概率

  1. 抽奖具体计算流程如下:
  1. 从一万个球里取球,根据总中奖概率(这里是10%)查看否抽中奖项,假设抽中数字为502,中抽奖结果中奖
  2. 检查各个奖项的总数(不是存在总数),以及是否还有库存,没有库存的奖项不参加具体的抽奖活动,假设将项目五 已经抽完其余的奖项抽中的概率如下:

奖项一:100/500=2000/10000

奖项二:100/500=2000/10000

奖项三:1000/500=2000/10000

奖项四:200/500=4000/10000

 

  1. 确定所中奖项,仍从一万个球里随机取,看所取数字落在那个奖项的编号区间

4、适用于指定用户单次抽奖和多次抽奖

根据概率抽奖算法-编程知识网