您的位置:首页 > 其它

实现不同概率抽奖功能

2016-04-27 16:41 225 查看
序号物品名称物品ID抽奖概率
1物品1P10.2
2物品2

P2

0.1
3物品3

P3

0.4
4物品4

P4

0.3
5物品5

P5

0.0
6物品6

P6

-0.1
7物品7

P7

0.008
VO类:Gift.java 具体对应就是上面表格里的内容

?
Util类:LotteryUtil.java 真正的不同概率的抽奖工具类

?
Test类:Test.java

?
不同概率的抽奖原理很简单

就是把0到1的区间分块,而分块的依据就是物品占整个的比重,再根据随机数种子来产生0-1中间的某个数,来判断这个数是落在哪个区间上,而对应的就是抽到了那个物品。随机数理论上是概率均等的,产生的每个数理论上也应该概率均等,那么相应的区间所含数的多少就体现了抽奖物品概率的不同。(p.s. 当然数目是数不清楚的,具体抽象话了点)

这个实例的数据可以说明

1. 概率可以是负数和0,当然实际上中应该不会(p.s. 正常情况下可能真的有0,比如抽个iphone5,当然是抽不到的了,这个时候,构建礼物(List gifts)的时候最好就不要加这个进去),还有可以把负数的处理放到抽奖工具类(LotteryUtil)中;

2. 所有礼物加起来的概率可以不是1,可以认为这里的概率是一个权重;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: