• java 简单抽奖


    基本思路

        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     }
    复制代码

    测试结果如下:

  • 相关阅读:
    Windows下MongoDB安装与PHP扩展
    仿Smarty替换模板标签时遇到的问题
    class ha_innobase: public handler
    类handler
    类Item_field
    函数buf_pool_init_instance
    函数buf_pool_init
    安装php,nginx 带debug
    gdb调试SAPI方式的php
    重启php-fpm
  • 原文地址:https://www.cnblogs.com/wangguanyi/p/14037523.html
Copyright © 2020-2023  润新知