ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java 简单抽奖

2020-11-25 18:04:33  阅读:253  来源: 互联网

标签:抽奖 java oddMap prizeMap jsonResult 简单 tempInt 概率 prize


基本思路

    1、确定你要的奖项,比如:一等奖、二等奖、三等奖、谢谢惠顾;

    2、设置4个区间,0~5是一等奖、6~15是二等奖、16~40是三等奖、剩下的40~100是谢谢惠顾;

    3、产生一个随机数,判断随机数在哪个区间之内,就会获得相应的奖项;

很简单的一个方法,刚好正在做的微信小程序这边有积分抽奖这个功能,就先写一个玩一玩,下面贴代码,因为很简单,所以后面我就不多逼逼了,大家自己看,如果有错误,欢迎指正!!

    

复制代码
 1 public JsonResult luckyDraw() {
 2         JsonResult jsonResult=new JsonResult("200");
 3         jsonResult.setFlag(true);
 4         jsonResult.setMsg("抽奖成功");
 5         
 6         //定义中奖率分母百分之
 7         int  probabilityCount=100;
 8         
 9         //最小概率
10         String min="min";
11         
12         //最大概率
13         String max="max";
14         Integer tempInt=0;
15         
16         //待中将商品数组
17         Map<String,Map<String,Integer>> prizeMap=new HashMap<>();
18             
19         //获取商品列表
20         List<Prize> prizeList=prizeDao.findAll();
21         
22         for(Prize prize:prizeList) {
23             Map<String, Integer> oddMap=new HashMap<>();
24             //最小概率值
25             oddMap.put(min, tempInt);
26             tempInt=tempInt+prize.getPrizeOdd();
27             //最大概率
28             oddMap.put(max, tempInt);
29             prizeMap.put(prize.getId(), oddMap);//(奖品id,最小概率~最大概率)
30         }
31         
32         //随机一个数字
33         int index=(int) (Math.random()* probabilityCount);
34         Prize prize=null;//中奖商品容器
35         Set<String> prizeIds=prizeMap.keySet();//拿到所有奖品id
36         for(String prizesId:prizeIds) {
37             Map<String, Integer> oddMap=prizeMap.get(prizesId);//商品的概率
38             Integer minNum=oddMap.get(min);
39             Integer maxNum=oddMap.get(max);
40             
41             //校验index在那个商品概率中间
42             if(minNum <=index && maxNum > index) {
43                 prize=prizeDao.getOne(prizesId);
44                 break;
45             }
46         }
47         
48         if(prize == null) {
49             prize=null;
50         }
51         
52         jsonResult.setObj(prize.getPrizeName());
53         return jsonResult;
54     }
复制代码

测试结果如下:

标签:抽奖,java,oddMap,prizeMap,jsonResult,简单,tempInt,概率,prize
来源: https://www.cnblogs.com/wangguanyi/p/14037523.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有