程序数学--如何粗略估计用户不会中奖的概率
假设最多有7
个用户并发抽奖 奖品只有店铺券 规则是选取最近创建
的一个店铺券再发放给用户 假设店铺券平均库存为46
下面是会不会中店铺券的概率计算
非理想情况 该店铺券可用库存(库存-已领取数)< 7 此时某些用户领取店铺券失败(因为
库存不足
) 默认为未中奖 概率:6/46~=13%理想情况 该店铺券可用库存>= 7 均能领取成功 概率: 40/46~=87%
下面想增加领取店铺券成功的概率 假如改成选择最近创建的3个店铺券 再从中随机分配一个店铺券发放 此时概率情况会是怎样的呢?
存在领取失败用户的概率 : 6/(46X3) = 3%
均能领取成功概率 : (46X3-6)/46X3 = 97%
我上面的计算公式正确吗?
即使上面的公式正确的话, 也只是考虑了某一静态时间点的情况(即最高并发数那一时间点的情况), 实际情况要更复杂, 需要知道店铺券生产的平均间隔时间
和平均并发数
以及并发之间的时间间隔
。 如平均2分钟
生产一个店铺券,平均库存为46
, 平均并发数为5
, 每隔1分钟
就有一次并发抽奖, 假如是这样的话, 2分钟内似乎完全可以支持2次的并发抽奖 因为46>2X5
, 但是要考虑到中间还会有个别用户抽奖, 假如每隔2秒钟便有一个用户抽奖,那么2分钟内会有60个用户抽奖(2X60/2), 那么此时店铺券就不够用了(46 < 60+2X5), 但是这些数据用mysql sql还真不好获得呢
店铺券表
ID | 创建时间 | 店铺ID | 库存 | 已领取张数 |
---|---|---|---|---|
1 | 2016-09-17 14:58:00 | 1 | 46 | 0 |
2 | 2016-09-17 15:00:00 | 2 | 46 | 0 |
用户抽奖表
用户ID | 抽奖时间 | 奖品 |
---|---|---|
1 | 2016-09-17 14:58:01 | 店铺券 |
2 | 2016-09-17 14:58:03 | 店铺券 |
所以想粗略估计一下多大的概率用户不会中店铺券 这样的话才能估摸出会有多少用户不会中店铺券, 这个问题没有想象的那么简单呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这种看上去都不好解决的问题,又不是搞理论研究只需要结果,就应该用蒙特卡罗法呀,随随便便来个十万人次抽个奖,很直观的就知道结果了