项目场景
实现一个大转盘抽奖的功能,能后台自定义奖项,各奖项中奖概率,奖品数量,当日抽奖最大次数等。
一、设计思路
这里简单分享下思路:
1.奖品中奖概率
所有参与抽奖的奖项中奖概率之和为 1
2.抽奖规则
这里首先需要明确如何中奖?
一般来说是生成随机数,然后将随机数与奖品的中奖概率相比较,如果小于中奖概率则中奖。
但是,如果每个奖项或者几个奖项的概率一样,上面的方法就会出现每次抽奖,中奖都是同一个奖品的情况
所以我们采用中奖概率累加的方法,如图所示:
抽奖规则:
- 获取该游戏的奖品列表,按照中奖概率升序排列 (可以不用排序)
- 奖品列表中的概率为累加概率,需要按照添加进列表的顺序进行累加
- 生成一个0-1的随机数,与设置好的奖品概率循环比较
- 若随机数小于概率值,则抽中该奖项