java抽奖算法
来源:互联网 发布:男性疾病网络咨询 编辑:程序博客网 时间:2024/05/17 22:25
import java.util.ArrayList;import java.util.List;import java.util.Random;import org.springframework.stereotype.Service;import net.sf.json.JSONArray;import net.sf.json.JSONObject;/** * 转盘抽奖逻辑 * * @author zwm * @date 2017-05-11 */@Servicepublic class LotteryTool {public static void main(String[] args) {List<Award> awards = new ArrayList<>();awards.add(new Award("a1", 0.1f, 10));awards.add(new Award("a2", 0.2f, 0));awards.add(new Award("a3", 0.3f, 10));awards.add(new Award("a4", 0.05f, 10));awards.add(new Award("a5", 0.2f, 100));for (int i = 0; i < 10; i++) {System.out.println("恭喜您,抽到了:" + lottery(awards).id);}}public static Award lottery(List<Award> awards) {// 总的概率区间float totalPro = 0f;// 存储每个奖品新的概率区间List<Float> proSection = new ArrayList<Float>();proSection.add(0f);// 遍历每个奖品,设置概率区间,总的概率区间为每个概率区间的总和for (Award award : awards) {// 每个概率区间为奖品概率乘以1000(把三位小数转换为整)再乘以剩余奖品数量totalPro += award.probability * 1000 * award.count;proSection.add(totalPro);}// 获取总的概率区间中的随机数Random random = new Random();float randomPro = (float) random.nextInt((int) totalPro);// 判断取到的随机数在哪个奖品的概率区间中for (int i = 0, size = proSection.size(); i < size; i++) {if (randomPro >= proSection.get(i) && randomPro < proSection.get(i + 1)) {return awards.get(i);}}return null;}static class Award {/** 编号 */public String id;/** 概率(0.1代表10%,最多3位小数,即千分之一级) */public float probability;/** 数量(该类奖品剩余数量) */public int count;public Award(String id, float probability, int count) {super();this.id = id;this.probability = probability;this.count = count;}public Award() {}}}
阅读全文
1 0
- Java 抽奖算法
- Java 抽奖算法
- JAVA抽奖算法
- java抽奖算法
- java抽奖算法
- java抽奖算法
- JAVA大转盘抽奖算法
- Java实现游戏抽奖算法
- JAVA 两个简单的抽奖算法
- java版根据权重抽奖算法
- 抽奖算法 - 幸运大转盘 - java
- 抽奖 算法
- 抽奖算法
- 抽奖算法
- 抽奖-算法
- 抽奖算法
- java 抽奖
- C#&PHP&Java实现Alias Method概率抽奖算法
- SAP暴力修改表内容
- 使用文件句柄方式恢复误删除的Oracle数据文件
- Java 强制垃圾回收
- laravel自动加载
- 支持多种浏览器的回车事件触发。
- java抽奖算法
- 元数据
- Android自定义view基础详解及开发流程
- eclipse 关联maven源码
- 错误日志:Error:java: 无效的源发行版: 1.8
- python版的斐波那契
- tomcat配置参数详解
- tableView 头部添加状态 今日头条刷新数据效果
- Why Programs Fail-系统化调试指南 (德)_读书笔记