新年到,在这春节之际,笔者还在编写抽红包的应用。 因为年后要帮客户定制一款大屏抽红包的活动。

这次的要求其实比较简单。 分为两个不同的奖品:

  • 抽奖所得,只需注册就可领取
  • 充值权益,只需充值就可获得相应的奖品

在权益的部分,不太需要在程序层面处理,只需要优化一下兑换流程即可。

下面主要讨论抽奖所得如何这部分。

如何抽奖

抽奖,无非是给到每个来的客人,尽量公平的概率。 但是我们的活动有一定的特殊性。 需要满足几个条件:

  • 前二等奖,有数量限制,概率固定,在奖品剩余数为0时概率分配给三等奖。
  • 第三等奖,无数量限制,概率相对固定,可能会由其他奖品分配过来而概率增大。

以上是整理出来的之前讨论的结果。

不过,这样的做法,每个人的概率是不相等的。

为什么呢?

因为一二等奖的数量有限。 那么一天的抽奖过程可以分为两个阶段:

所有奖品都剩余

此时中奖的概率由之前设置的规则决定

一等奖不足

一等奖的概率会自动分配给三等奖,也就是说在这之后的客户的概率其实是与之前的不等的

二等奖不足

类似一等奖

这种做法的好处是,可以灵活调整中奖概率,不受物品个数限制。 坏处呢,也很明显,就是当日的前后抽奖人的概率不相等。

另外一种抽奖方式

另外一种做法是由剩余奖品决定中奖概率,就是完全模拟箱子内抽奖品的方式。

这种做法的好处是:一天以内,所有人概率均等。

坏处是:无法从全局控制中奖概率

暂不考虑。