博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抽奖概率
阅读量:6229 次
发布时间:2019-06-21

本文共 1007 字,大约阅读时间需要 3 分钟。

/**  * 通过奖品列表中的概率抽取奖品  *  * @param list  * @return  */ private GiftPackageRule getPrize(List
list) {
if (list == null || list.size() < 1) return null; // 先计算所有中奖率的总和 double total = 0.0; for (GiftPackageRule dpr : list) {
total += dpr.getProbability(); } //如果概率小于100的话,增加一个不中奖的概率,去掉这行代码就是100%中奖 if (total < 100) {
GiftPackageRule giftPackageRule = new GiftPackageRule(); giftPackageRule.setProbability((int) (100 - total)); list.add(giftPackageRule); } // 获取一个代表中奖的随机值 double bingo = Math.random() * total; // 判断这个中奖值落在哪个奖品上 for (GiftPackageRule dpr : list) {
if (bingo < dpr.getProbability()) {
if (dpr.getGiftPackId() == null) {
return null; } else {
return dpr; } } else {
bingo -= dpr.getProbability(); } } return null; }

转载于:https://www.cnblogs.com/tinya/p/10001858.html

你可能感兴趣的文章
RX系列一 | ReactiveX根源 | 观察者模式分析
查看>>
一些C++11语言新特性 - Uniform Initialization
查看>>
Redis高级实践之————Redis短连接性能优化
查看>>
CentOS 6.5 安装nginx 1.6.3
查看>>
48.3. 设置Apache实现防盗连
查看>>
项目管理、测试管理、代码bug 管理
查看>>
SAP物料主档关键栏位解释
查看>>
Nim教程【十二】
查看>>
第 30 章 Shell Terminal
查看>>
Data Guard实现故障自动切换(二)(r11笔记第39天)
查看>>
[20171211]ora-16014 11g.txt
查看>>
oracle的正则表达式
查看>>
这几天的两件趣事
查看>>
小块头大作用 新型低成本测距传感器适用于无人机
查看>>
VSTO之旅系列(五):创建Outlook解决方案
查看>>
[erlang] mnesia
查看>>
php编码
查看>>
Java使用Socket传输文件遇到的问题(转)
查看>>
MYSQL-用户权限的验证过程(转)
查看>>
快递配送最后一公里的痛:利益失衡后开始崩塌
查看>>