活动抽奖算法 | 关于活动抽奖算法逻辑的一些思考、刮刮卡、大转盘等


最近一直在处理抽奖活动相关的内容,计划过段时间重构公司的一套旧的活动系统,在此记载下自己对抽奖算法逻辑的一些思考。

先列举一下抽奖活动逻辑相关的影响因素:

活动相关:活动持续时间、活动参与人数

奖品相关:奖品总数量、各奖品权重、谢谢参与

用户相关:抽奖次数、用户刷奖

做抽奖业务时,需要考虑到的几个关键点:

活动持续多长时间?

活动预计参与人数有多少?

各类奖品在整个活动过程中出现的分布情况是怎样的?

如何保证所有奖品不被短时间之内抽完?

如何保证用户不能恶意刷奖?

同时,抽奖类活动往往伴随着高峰值、大流量等等同时出现,在用户流量过大时如何进行合理规划?


来分析一下抽奖逻辑:

既然是“抽奖”,就会存在一定的概率问题,抽奖算法,实际上就是在考虑如何最有效的确保用户获得奖品的概率相对公平、确保奖品能够持续到活动结束。

对于不限制奖品数量的抽奖活动,抽奖逻辑相对简单,通过“奖品权重”,很容易做到每个用户抽到奖品的概率和不中奖的概率基本稳定。

然而在实际业务中,稍微复杂一些的抽奖系统,往往会对其中的某几个奖品进行数量的限定,此时,再仅仅使用“奖品权重”这一个维度的抽奖限定就有些捉襟见肘了。

常见的,如果一个抽奖活动需要持续五天的时间,奖品数量固定,同时奖品出现的概率固定,那么很容易出现的一种状况就是,在活动的第一天,奖品就消耗殆尽了,而接下来的四天,活动依然要进行,并且如果大奖刚开始就被玩家抽中,这个活动的诱惑力也会大打折扣。

所以,在常见的抽奖活动中,我们需要从奖品数量、活动持续时间、奖品出现概率、参与用户数量等多个维度来考虑抽奖算法。


思路一:限制每日最大奖品数量

想要保证“奖品维持到活动结束”,最简单的思路就是根据活动天数,限制每日奖品被抽中的最大数量,每当用户根据概率计算,抽中限定奖品时,逻辑判断该奖品当日是否已超量,若已达当日最大数量则将奖品置为其他不限量奖品或谢谢参与。


思路二:构建活动奖品池,缓慢释放奖品入池

构建一个活动奖品池,按小时拆分活动持续时间,每小时一次,按照奖品权重概率向奖品池中丢入奖品,确保奖品数量持续到活动结束。

未标题-1.jpg

这样做,可以对活动奖品的发放做到有效控制。

再细化一些,我们还可以限定具体奖品的发放时间,做到对各奖品出现时间规律的调控。

对于抽奖奖品的控制,反正总体思路就是“绑定奖品数量和发放时间,对奖品数量做到除了概率以外的其他干预调控”,确保活动持续进行。

本文发表于2017年12月25日 22:04
阅读 13282 讨论 0 喜欢 14

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1