
活动:在女神节当天,用户点击活动页面的抽奖按钮,可随机获得一张优惠券。
背景:由于经费限制,最多发放200张。并且要求不能集中到一个时间段发放。中奖时间平均要分布在上午09点-下午07点。
每次用户抽奖,系统需要一个算法,返回一个布尔值(是否中奖)。这个算法要保证两点:
十个小时下来,中奖时间分布要均匀;
中奖人数不能超过200
这个算法的主要难点在于:设计程序时,无法预知这一天将会有多少人参加活动,甚至他们将会在什么时间参加。如果可以预知这些,那么根据参加活动的总人数,很容易计算出来哪些人是中奖的,然后当这些人抽奖的时候,算法返回一个true就行了。但事实是我们都没有预知未来的能力。

本文介绍了如何设计一个抽奖算法,在无法预知参与人数的情况下,通过调整活动热度系数来保证10小时内中奖时间的均匀分布,并确保中奖人数不超过200。算法核心是计算中奖概率,即剩余优惠券数除以剩余活动时间和每秒预计参与者数的乘积。通过实时调整热度系数和将优惠券分配到小时段,实现了中奖时间的分散性。
最低0.47元/天 解锁文章
2910

被折叠的 条评论
为什么被折叠?



