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