积分转盘抽奖算法设计解析

                      产品小白专属,10周线上特训,测、练、实战,22位导师全程带班,11项求职服务,保障就业!了解详情

                      积分转盘抽奖很常见,那么如何合理设计抽奖次数、每次抽奖消耗积分达到运营目的?

                      一、背景

                      大家在各类产?#20998;?#24456;常见积分转盘抽奖,比如天猫积分抽奖等、常见的积分抽奖都是奖品价值大小不等,中奖概率不等。

                      二、随机概率抽奖算法

                      抽奖主要有以下几种做法,我们不考虑纯前端控制的方法。采?#27599;?#25143;端+服务端方式,这是比较科学的。

                      以下说明两种常见的抽奖概率的算法:

                      (1)随机抽奖概率算法设计

                      奖项数组是一个二维数组,记录本次抽奖的奖项信息:

                      1. 假设产品有n项、分别是:平板电脑、数码相机、音箱设备、4G优盘.、10积分、下次没准就能中哦。
                      2. id表示中奖等级,prize表示奖品,v表示中奖权重,v必须为整数,v可以为0意味着该奖项抽中的几率是0。
                      3. 假设数组中v的总和为Sv(基数越大越能体现概率的准确性),那么每个奖?#20998;?#22870;概率就是v/Sv=(v1+v2+…+Am)(假设总和为100,平板电脑的中奖概率为1,中奖概率为百分之一,如果总和为100,中奖概率为万分之一)。
                      4. 每次前端请求,后台循环奖项设置数组,通过概率计算获取抽奖的奖项,输出数据给前端页面 。

                      经典的概率算法:

                      预先设置一个数组,假设数组为:array(100,200,300,400)。

                      开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内,如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间,在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。

                      这样筛选到最终,总会有一个数满足要求。就相当于去一个箱子里摸东西,第一个不是,第二个不是,第三个还不是,那最后一个一定是。

                      这个算法简单,而且效率非常高。

                      (2)根据概率和剩余奖品数量来分配一个空间,再在这个空间中取随机数,判断随机数落在哪个区块方法获得抽奖结果

                      1. 设置总的概?#26159;?#38388;;
                      2. 存储每个奖品新的概?#26159;?#38388;;
                      3. 遍历每个奖品,设置概?#26159;?#38388;,总的概?#26159;?#38388;为每个概?#26159;?#38388;的总和;
                      4. 每个概?#26159;?#38388;为奖品概率乘以1000(把三位小数转换为整),再乘以剩余奖品数量,获取总的概?#26159;?#38388;中的随机数;
                      5. 判断取到的随机数在哪个奖品的概?#26159;?#38388;中。

                      eg.有5个奖品,分别是:?#36824;?#39321;蕉、橙子、葡萄、柚子。

                      中奖机率如下:?#36824;?0%;香蕉:5%;橙子:60%;葡萄:10%;柚子:15%。

                      根据奖品个数和中奖机率定义一个奖品概率数组,总和为100,生成区间数组【0,10,15,75,85,100】,定义一个随机数,随机数落入哪个区间,就中哪个奖品。

                      三、等概率抽奖具体案例

                      因为之前这个项目RD没有给后台设置奖品时加概率的配置,所以整个抽奖体系只能靠控制奖品项、控制库存数量?#32431;?#21046;抽奖结果,而且运营了一段数据,根据运营数据分析做出了一些调整,所以等概率中奖会说明的详细一些。

                      (1)抽奖页面的原型设计

                      (2)设置不同积分值

                      项目上线后,运营上线了积分可?#19968;?#30340;奖品,不同产品对应不同积分值?#19968;唬?#35774;置了转盘可中奖的不同积分值。

                      但上线两周后,运营发现数据不是自?#21512;?#35201;的,虽然拉新促活的目的达到了,用户抽奖参与度也很高,但因为每天设置的抽奖次数过多,每次抽奖消耗的积分过少,每个用户每日中奖的积分数量增长过高,奖品?#19968;?#29575;过高。

                      于是有了以下思考:应该设置用户每日抽奖几次、每次抽奖消耗多少积分才能合理达到运营想要效果。

                      (3)在此我们假设所有的奖项都是积分数值

                      讨论?#37027;?#25552;是当前项目中每个奖品的中奖概率相等?#37027;?#20917;,设奖品有m项、每项积分数分别为A1、A2、…、Am。

                      每日可抽奖次数为n,每次抽奖消耗的积分为a,根据数学知识我们知道抽奖次数样本足够大?#20445;?#25277;奖几率应?#20204;?#36817;于相等。所以每轮抽奖(n次为一轮)可获得的积分数:Sn=(A1+A2+…+Am)-n*a

                      【所有奖品抽到一次获得的总和-抽奖n次消耗的积分数】

                      显然易见:若想用户抽奖积分为负增长,只需Sn<0?#32431;傘?#33509;想用户抽奖积分为正增长,则只需Sn>0?#32431;?#24403;每天可抽奖n次?#20445;?#27599;天可获得的积分?#25512;?#22343;值=Sn*n/m。

                      活动的最终目的还是促活、吸引更多的人来参与活动?#19968;?#22870;品。那么假设?#19968;?#30340;奖品所需积分数为Y,想要用户?#19968;?#19968;个奖品的日活天数为d,使Y/d=(A1+A2+…+Am)*n/m?#32431;傘?/p>

                      【每个奖品需要的分数/想要用户获得的天数=用户每天可获得积分数量】

                      Y可根据奖品的平均积分数或最小积分数来计算,以此达到运营拉新促活的目的。

                      四、总结

                      以上是最近手头一个项目的经验及相关思考,积分转盘抽奖虽然常见,但是真正做起来需要考虑的点也很多,比如为了灵活运营,抽奖次数和消耗的积分后台可做成可配等等。

                      每一个看似常见的功能都要自己亲自去设计,去跟进开发测试,才会有新的理解和收获。

                      以上,一点经验分享,欢迎大家一起交流,多多指点。

                       

                      本文由 @葡萄成熟时 原创发布于人人都是产品经理。未经许可,禁止转载

                      题图来自网络

                      给作者打赏,鼓励TA抓紧创作!
                      6人打赏
                      评论
                      欢迎留言讨论~!
                      1. 大佬,求微信

                        回复
                      2. 说老实话 感觉公式的解释并不是很清楚 不太好理解 n是每个用户每天可以抽奖的次数? 明明是算用户可以抽奖的次数和抽奖积分消耗数 但是感觉按照你这个根本算不出来呀 你这个n理解成每个用户抽奖次数不符合你自己对n的定义 但是理解成用户整体抽奖次数貌似也没法控制参与用户的人数吧 那怎么?#33539;╪呢 没整明白

                        回复
                      3. 亲,请问设置这个抽奖活动?#20445;?#26377;没有考虑抽奖次数、用户所在地域、用户?#21592;?#31561;和奖品、中奖率等的规则?想请教学习一下

                        回复
                        1. 开始没有想很多,上线后发现中奖率太高,就考虑了抽奖次数、消耗积分和中奖率的关系

                          回复
                      4. 随机概率那段没太明白,运营效果也没写。等概率那段写得不错,思?#38750;?#26224;

                        回复
                        1. 大概因为后面是亲身经历,前面也是理论知识 :smile:

                          回复
                        2. 哈哈,果然?#23548;?#26159;检验真理的

                          回复
                      5. 开发过来的吧。

                        回复
                      6. 不知所云,

                        回复
                      login博九彩票