java抽奖程序代码(java抽奖系统的设计)

奖品类:

java抽奖程序代码(java抽奖系统的设计)

抽奖逻辑:

java抽奖程序代码(java抽奖系统的设计)

测试类:

java抽奖程序代码(java抽奖系统的设计)

测试结果:

java抽奖程序代码(java抽奖系统的设计)

商品类:

package org.plusgroup.modules.app.controller.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Administrator
 * @desc 奖品VO
 * @date 2022/7/9 14:30
 */
@Data
public class PrizeVo {
    @ApiModelProperty("奖品ID")
    private Integer id;
    @ApiModelProperty("奖品名称")
    private String name;
    @ApiModelProperty("奖品编号")
    private String code;
    @ApiModelProperty("中奖概率")
    private Double rate;

    public PrizeVo(Integer id, String name, String code, Double rate) {
        this.id = id;
        this.name = name;
        this.code = code;
        this.rate = rate;
    }
    public PrizeVo() {
    }

    /**
     * 初始化奖品
     * @return List
     */
    public static List init(){
        List list = new ArrayList();
        list.add(new PrizeVo(10, "文档打印券", "P1", 0.2d));
        list.add(new PrizeVo(20, "照片打印券", "P2", 0.5d));
        list.add(new PrizeVo(30, "5元代金券", "P3", 0.1d));
        list.add(new PrizeVo(40, "谢谢参与", "P4", 0.2d));
        return list;
    }
}

测试类:

本文转载自:https://www.gylmap.com

package org.plusgroup.modules.admin.service;

import org.plusgroup.modules.app.controller.vo.PrizeVo;
import org.springframework.util.CollectionUtils;

import java.util.*;

/**
 * @author Administrator
 * @desc
 * @date 2022/7/9 14:43
 */
public class IntegralLogTest {

    public static void main(String [] args){
        //奖品中奖概率集合
        List rates = new ArrayList();
        //将每个奖品的概率放入概率集合
        List list = PrizeVo.init();
        for(PrizeVo prizeVo : list){
            rates.add(prizeVo.getRate());
        }
        System.out.println("本次中奖商品下标:" +luckDraw(rates));

        // 统计每种商品中奖次数
        Map countMap = new HashMap();
        double num = 10000; //测试次数
        for (int i = 0; i  entry : countMap.entrySet()) {
            System.out.println(list.get(entry.getKey()) + ", 命中次数=" + entry.getValue() + ", 实际概率=" + entry.getValue() / num);
        }
    }


    /**
     * 抽奖逻辑
     * @param rates 概率集合
     * @return int
     */
    public static int luckDraw(List rates) {
        if (CollectionUtils.isEmpty(rates)) {
            return -1;
        }
        //计算总概率,概率集合累加
        double totalRate = 0d;
        for (double rate : rates) {
            totalRate += rate;
        }
        // 每个奖品在总概率基础下的概率
        List sortRates = new ArrayList();
        double everyRate = 0d;
        for (double rate : rates) {
            everyRate += rate;
            sortRates.add(everyRate / totalRate);
        }
        // 根据区块值来获取抽取到的物品索引
        double nextDouble = Math.random();
        sortRates.add(nextDouble);
        Collections.sort(sortRates);

        return sortRates.indexOf(nextDouble);
    }
}
秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • 一万缅币是多少人民币(1w人民币等于多少缅币)

    根据相关的统计发现:这几年国内的小伙伴对于我国的邻国,比如东南亚地区的国家是十分感兴趣的。 毕竟东南亚地区的国家不仅仅拥有众多的旅游特色,而且当地的风土人情也值得大家认可。 既然这…

    2022年5月22日
  • 多肉怎么浇水(多肉植物的浇水方法说明)

    学会给多肉浇水,预防根系腐烂,浇水看似简单,实际上有讲究 多肉浇水是整个养护期间必不可少的一步,合理的浇水方式可以让多肉更好的生长,甚至还可以杜绝多肉的根系腐烂,养多肉,最怕的就是…

    2022年4月5日 专栏投稿
  • 怎么删除qq视频(qq编辑说说怎么删除视频)

    2008-08-03 如何往QQ空间里上传视频如何往QQQ空间插入视频有两种情况,1 在主页添加视频模块。2 在日志里插入视频,下面我对于这两种情况分别做个具体的说明: 一 在主页…

    2022年4月17日
  • word 破解版怎么打开(办公软件word破解版教程)

    大家工作中是不是会遇到world文档被加密,有时是前辈刻意为之,有时是自己加密后忘记密码,总之,遇到这样的情况会非常的麻烦,简直讨厌至极。找专业人士还是如何,咋办? 今天和大家分享…

    2022年6月27日 专栏投稿
  • 杯子怎么洗(新买的塑料水杯怎么消毒)

    刚买回来的新杯子总有一股或多或少的异味,而且新的杯子也不干净卫生。可别以为随便用水清洗一下就能使杯子干净卫生无异味了,来看看新买杯子的清洗技巧,不管你买的是什么类型的杯子按照这些技…

    2022年4月25日
  • 面食加盟连锁品牌(手工面加盟店排行榜)

      面馆投资费用因为根据城市不一样,投资额度也不一样,具体也需要看您是在哪座城市,以及您的装修费用及商圈,装修方面公司不要求您所用的装修材质,只要风格一样,有一些品牌风格的元素在里…

    2022年5月8日
  • 球毛多少钱(如何用猫毛做球球)

    冬天到啦,很多勤快的妈妈、外婆都开始为宝贝打围巾、织毛衣。与其说是针织,不如说是制造温暖的最潮DIY。 在织完一件毛衣后,毛线总会有些剩余,除了给猫主子玩耍外,还能给宝宝做些特别的…

    2022年5月25日 专栏投稿
  • 应聘简历怎么写(应聘工作自我介绍范文)

    哈喽,很高兴又和大家见面啦。今天我们一起来学习下面试中的自我介绍,自我介绍在面试中的环节是非常重要的,该怎么介绍可以避雷的同时让hr对我们印象深刻呢。 我们满怀欣喜的面试,接待你的…

    2022年4月21日
  • 年利率多少受法律保护(网贷利息超过24%可以不还吗)

    民间借贷是指公民之间、公民与法人之间、公民与其它组织之间的借贷。最高人民法院《关于人民法院审理民间借贷案件的若干意见》规定:民间借贷的利率可以适当高于银行的利率,但最高不得超过银行…

    2022年5月22日
  • 狮群的狩猎主要是(最后的狮子)

    今天支付宝蚂蚁庄园2020年6月15日庄园小课堂的答案是什么呢?蚂蚁庄园庄园小课堂2020年6月15日的问题是:风筝也叫纸鸢其中鸢是指?和柠檬吃起来酸溜溜的,所以它是酸性食物吗?和…

    2022年6月19日
品牌推广 在线咨询
返回顶部