|
1、 中奖比例:1%,
2、 中奖规则:根据回访完成后产生的流水号和中奖比例随机抽奖,每1000个号码为抽奖单位。
代码实现算法描述:
1、 根据用户登录的账号到数据库中查询出用户流水号
2、 根据用户流水号查询出当前的抽奖单位(如1到1000,5001到10000 …)
3、 判断该抽奖单位中的中奖率是否小于用户后台设定的中奖率
4、 如果否,直接显示未中奖页面;如果是,运行抽奖算法(如下)。
抽奖算法规则:
a)计算中奖幅度:
中奖幅度=(抽奖单位(1000)/(抽奖单位(1000)*中奖率),
注意:中奖幅度如果不为整数,则直接取整(去掉小数部分)
b)计算中奖最近的流水号:
抽奖单位下限+Math.ceil((用户流水号-抽奖单位下限)/中奖幅度)* 中奖幅度:
id = (int)(lower + Math.ceil((id - lower) / (double)inteval) * inteval);
注意:Math.ceil()为向上取整,使用这个公式的目的是:减少通过循环方式计算中奖id的时间,从而提高计算效率。
c)如果计算出的中奖流水号(id)等于当前用户的流水号 |
|