以前写过一个
有个后台,由运营配置 奖品和库存, 然后根据库存来计算中奖概率
所以 一等奖的 iPhone 的库存是 0,所以这个就不会抽中,但是会在抽奖列表里
概率是这么算的(是想公平点……)
就是随机值
比如 所有奖项库存是 100
一等奖是 iPhone,库存 0, 所以 概率就是 0
二等奖库存 10 个, 概率就是 10%
三等奖库存 40 个,概率就是 40%
四等奖库存 50 个,概率就是 50%
那么第一个人抽, 随机值是从 (0,100]
如果随机值是 (0,10] 就是二等奖
如果随机值是[11,50] 就是三等奖
如果随机值是[51,100]就是四等奖
第一个人抽中后,库存减一,比如 是抽中二等奖
那么 接下来的人
二等奖范围[0,9]
三等奖[10,49]
四等奖[50,99]
这样每个奖品都有库存.. 还可以随时加库存..
另外,如果有 谢谢惠顾 也是按照一种奖品来设置的. 不过他的奖品 ID 是特定的, 因为它的库存是无限的, 数据库里是有限的,如果不够了,代码会自动补货….
然后就是 缓存和数据库的事情了
以前的伪代码: http://interview.wzcu.com/%E8%AE%BE%E8%AE%A1%E9%A2%98/%E5%B8%A6%E6%9C%89%E6%9D%83%E9%87%8D%E7%9A%84%E9%9A%8F%E6%9C%BA%E7%AE%97%E6%B3%95.html#%E4%BB%A3%E7%A0%81
主要以前量小, 基本问题不大…