KWISPY_SEAL_BONES
2020-08-13T02:13:39+00:00
另外一个部门写的抽奖代码,发现用户抽的太快,叫我们看下,我看了下他们这抽奖逻辑有点奇葩,把我绕晕了,发出来让大神分析分析。
举例系统设置1等奖概率应该为32/10000,二等奖400/10000,三等奖1666/10000。 库存就是32,400,1666
现在抽奖逻辑是
随机一个数,
先判断是否小于32,小于则中一等奖->如无库存则判断是否小于400,小于则中二等奖->如无库存则判断小于1666则中三等奖
如果该数大于32,则判断是否小于400+32,小于则中二等奖->如无库存则判断小于1698则中三等奖
如果该数大于432,则判断是否小于400+32+1666,小于则中三等奖
真的太绕了,领导只安排帮忙看有问题不,有问题就提意见,改要他们自己去改
我总结下,他是分有无库存的情况
有库存数量时
0~32是一等奖
32~432是二等奖
432~2098是三等奖
当一等奖无库存
0~400二等奖
400~2066是三等奖
下个伪代码( 别吐槽,没写过 )
按顺序获取1、2、3等奖集合
随机一个抽奖数范围0-10000
设置一个变量X
循环一二三等奖
X加上循环奖励几率(一等奖32,二等奖400,三等奖 1666)
判断如果抽奖数小于X
判断库存
如无库存X减去该奖的几率
有库存直接中奖
大于X继续循环
我左看右看理论上好像没问题,实际上我测试了下抽了几个2000次,3等奖都是20%左右。。 有大佬能分析出问题在哪吗?
我们不是一个部门的,人家嘴很硬,说要么我们拿出实质证据,不然就是代码没问题,是抽奖概率问题。来NGA求神人打脸。
举例系统设置1等奖概率应该为32/10000,二等奖400/10000,三等奖1666/10000。 库存就是32,400,1666
现在抽奖逻辑是
随机一个数,
先判断是否小于32,小于则中一等奖->如无库存则判断是否小于400,小于则中二等奖->如无库存则判断小于1666则中三等奖
如果该数大于32,则判断是否小于400+32,小于则中二等奖->如无库存则判断小于1698则中三等奖
如果该数大于432,则判断是否小于400+32+1666,小于则中三等奖
真的太绕了,领导只安排帮忙看有问题不,有问题就提意见,改要他们自己去改
我总结下,他是分有无库存的情况
有库存数量时
0~32是一等奖
32~432是二等奖
432~2098是三等奖
当一等奖无库存
0~400二等奖
400~2066是三等奖
下个伪代码(
按顺序获取1、2、3等奖集合
随机一个抽奖数范围0-10000
设置一个变量X
循环一二三等奖
X加上循环奖励几率(一等奖32,二等奖400,三等奖 1666)
判断如果抽奖数小于X
判断库存
如无库存X减去该奖的几率
有库存直接中奖
大于X继续循环
我左看右看理论上好像没问题,实际上我测试了下抽了几个2000次,3等奖都是20%左右。。 有大佬能分析出问题在哪吗?
我们不是一个部门的,人家嘴很硬,说要么我们拿出实质证据,不然就是代码没问题,是抽奖概率问题。来NGA求神人打脸。