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

奖品类: 抽奖逻辑: 测试类: 测试结果: 商品类: packageorg.plusgroup.modules.app.controller.vo; importio.swagger.annotations.ApiModelProperty; importlombok.Data; importjava.util.ArrayList; importjava.util.List; /** *@auth…

奖品类:

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 2021/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<PrizeVo> init(){
        List<PrizeVo> 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;
    }
}

测试类:

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 2021/7/9 14:43
 */
public class IntegralLogTest {

    public static void main(String [] args){
        //奖品得奖概率结合
        List<Double> rates = new ArrayList<>();
        //将每一个奖品的概率放进概率结合
        List<PrizeVo> list = PrizeVo.init();
        for(PrizeVo prizeVo : list){
            rates.add(prizeVo.getRate());
        }
        System.out.println(\"此次得奖产品字符:\"  luckDraw(rates));

        // 统计分析每一种产品得奖频次
        Map<Integer, Integer> countMap = new HashMap<>();
        double num = 10000; //测试次数
        for (int i = 0; i < num; i  ) {
            int key = luckDraw(rates);
            Integer value = countMap.get(key);
            countMap.put(key, value == null ? 1 : value   1);
        }
        for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
            System.out.println(list.get(entry.getKey())   \", 击中频次=\"   entry.getValue()   \", 具体概率=\"   entry.getValue() / num);
        }
    }


    /**
     * 抽奖逻辑性
     * @param rates 概率结合
     * @return int
     */
    public static int luckDraw(List<Double> rates) {
        if (CollectionUtils.isEmpty(rates)) {
            return -1;
        }
        //测算总概率,概率结合累积
        double totalRate = 0d;
        for (double rate : rates) {
            totalRate  = rate;
        }
        // 每一个奖品在总概率基本下的概率
        List<Double> 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)
上一篇 2022年5月8日 下午1:11
下一篇 2022年5月8日 下午1:12

相关推荐

  • 微信聊天记录保存在哪里,永久保存微信聊天记录方法

    今天凌晨苹果发布会上一个叫Liam的机器人受到不少关注,它主要是负责将旧iPhone进行拆解分类。如果零件是完好的,它们可能会出现在翻新机上,在生活中我们平时处理旧iPhone的途径无非以下几种。 第一种是直接被苹果官方回收,第二种是将手机卖到二手市场,还有一种是转赠给其他人使用。不管用哪种方式处理自己的旧iPhone,在给其他人之前一定要注意将手机中的一些个人隐私数据清除。 部分用户觉得只需要将…

    2022年8月4日
    840
  • 酒吧管理系统有哪些(酒吧管理系统架构)

    随着科技的进步,酒吧管理也来到一个新阶段,很多老板曾经开端借助酒吧管理软件来更好地管理门店、员工等事。那么,开酒吧应该如何选择酒吧管理软件? 这边先简单的科普下酒吧管理系统,像以前的单机版收银软件功用单一,无法满足现代酒吧的管理需求,而且单机系统无法更新,购置几年后系统落后,无法顺应门店,而且数据容易丢失,无法找回,耗时耗力。 现在市面上呈现了很多SaaS架构的管理系统,无需本地数据库,只需求经过…

    2022年5月10日
    920
  • 电脑摄像头拍照软件有哪些(笔记本电脑拍照app推荐)

    尼康发布“尼康影速传”,这是一款兼容智能手机或平板电脑的应用程序,无需使用电脑即可将尼康数码相机拍摄的图像自动传输到FTP*1服务器,Android版和iOS版将于11月24日开始提供。此外,同时发布“尼康远控”,这是一款支持尼康数码相机联机拍摄的电脑软件*2,可以在电脑上调整相机设置并支持遥控拍摄,将于11月4日起提供免费下载。 “尼康影速传”是一款兼容智能手机或平板电脑的应用程序,提供专业摄影…

    2022年5月12日
    3450
  • 内存条检测工具有哪些(教你让电脑进入自检状态)

    我们常常会使用系统自带的内存诊断工具和memtest这个工具来检测内存是否存在错误。但是我们很多玩家可能都不知道QuickMemoryTestOK这个更为强大的内存检测工具。 今天我们一起来看看QuickMemoryTestOK。 1/显示内存信息 QuickMemoryTestOK的功能非常丰富,可以检测内存信息,我们可以看到内存运行的频率。但是因为QuickMemoryTestOK检测内存信息…

    2022年5月11日
    860
  • 成功营销案例100例,值得我们学习与分享

    昨天分享了几个失败的营销案例,身边很多朋友说我这样不行,让我写几个成功的案例,今天给大家分享几个操作简单的营销案例,绝对能俘获消费者的心。 案例一:随机事件让消费者“占便宜” 美国有家名为“冲浪烧烤酒吧”的餐厅,店面的选址不太好,因为店不远处有座吊桥,每当有船经过,吊桥就会升起5-7分钟,阻挡了部分消费者进店。但是,酒吧的老板通过“小手段”让吊桥障碍变成了获客优势,他是怎么做的? 酒吧老板推出了“…

    2022年8月29日
    770
  • 苏菲笔记本怎么样(微软surfacert平板电脑配置参数)

    微软的“苏菲”家族三年来进化得非常厉害,从SurfacePro的既定路线扩张到了一体机、笔记本领域。更新周期较快的情况下,Surface旧产品的市场价格也连遭打击。最近,随着二代SurfaceBook的推出,初代和增强版价格惨遭腰斩。 在美国亚马逊网站上,初代SurfaceBook基础配置i58GB128GB版从1499刀降到了799刀,接近五折完全腰斩。i58GB256GB独显版从1899刀降到…

    2022年10月18日
    900
  • 创业失败的因素有哪些,会带来什么消极影响

    创业有风险,但阻挡不了人们创业的热情,哪怕是头破血流,他们依然选择走这条路。创业有成功也有失败,下面是创云网在深圳街头采访5位创业失败者,让我们看看他们的创业情况。 杨启先生,湖北武汉人,38岁已婚,从事计算机行业。他原本有一份不错的工作。2016心血来潮辞掉工作和朋友一起做电商卖衣服。三年下来整整亏了50多万。公司设计部门5个人,仓库3个人,自己当老板也当员工。他表示公司目前处于刚刚能维持的状态…

    2022年5月18日
    1030
  • 运营部门有哪5个岗位,这5大运营岗位你必须了解

    网络运营部岗位职责 制度名称:网络运营部岗位职责 编号:运营部XXX 编制人: 日期: 修改记录: 一、运营部职责 为公司提供直接的企业宣传战略建议,参与公司营销战略制定,承担公司广告传播工作的实施和广告效果测评。负责线上网络运营管理工作,组织协调有关部门开展产品包装设计工作的开展及相关市场调研工作。具体内容如下: (一)网络信息收集、竞品分析 了解网络行业市场状况,了解竞争对手状况,对当前网络行…

    2022年9月30日
    4370
  • 小笼包加盟哪家好(正宗杭州小笼包加盟条件)

    对于生活在山东泰山脚下的泰安人来说,总是习惯用一屉热腾腾的小笼包开启美好的一天。小笼包店在街头巷尾随处可见,而最受泰安人喜爱的小笼包莫属“第一笼”鲜肉小笼包。 每天一大早,位于泰城火车站北龙潭路西面的“第一笼”门店前,都会排起长长的队伍,等待着新鲜出炉的包子,只为那一口31年的泰城老味道! 传承31年老味道,所有门店坚持直营 “第一笼”创始人郝佩文,1977年生人,15岁便踏入餐饮行业,潜心研究鲁…

    2022年5月8日
    910
  • 嵌入式洗碗机哪个牌子好(4款口碑最好的家用洗碗机推荐)

    【PConline海选导购】首个机器洗碗专利是由JoelHoughton在1850年拥有,他发明的是手动洗碗机。直至1929年,德国的米勒(Miele)公司才制造出了欧洲第一台电动家用洗碗机。在亚洲,最早从事洗碗机研究工作的是日本,到了九十年代中后期,日本已发展了微电脑全自动台式洗碗机。 如今,洗碗机在欧美家庭的普及率高达70%。对于忙碌的上班族,谁不喜欢在睡前将需要清洗的餐具放进洗碗机,第二天打…

    2022年10月17日
    400

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信