java简单的抽奖工具类(含测试方法)

文章目录

      • 结果
      • 代码

结果

在这里插入图片描述

代码

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.ToString;import java.util.ArrayList;
import java.util.List;/****/
public class LotteryUtils {public static void main(String[] args) throws InterruptedException {List<Prize> list = new ArrayList<>();list.add(new Prize(1L, "一等奖", 5));list.add(new Prize(2L, "二等奖", 15));list.add(new Prize(3L, "三等奖", 35));list.add(new Prize(4L, "谢谢回顾", 45)); // 权重越大,几率越高Integer t1 = 0;Integer t2 = 0;Integer t3 = 0;Integer t4 = 0;for (int i = 0; i < 100; i++) {Prize prize = weightFilter(list);if(prize.getId() == 1){t1++;}else if(prize.getId() == 2){t2++;}else if(prize.getId() == 3){t3++;}else{t4++;}}System.out.println("100万次抽结果如下:");System.out.println("一等奖:"+t1);System.out.println("二等奖:"+t2);System.out.println("三等奖:"+t3);System.out.println("谢谢回顾:"+t4);}/*** 从一组数据按照概率分布随机取出一个** @param list列表* @return 随机生成的数据的Prize */// 基于权重的随机算法public static Prize weightFilter(List<Prize> list) {// 获取list的权重总数long weight = list.stream().mapToLong(Prize::getWeight).sum();// 在总权重中抽取随机样本int random = (int) Math.floor(Math.random() * weight);for (int j = 0; j < list.size(); j++) {//如果随机样本 < 对象[j] 中指定的概率数值,则认为此次随机 命中在对象[j]上if (random - list.get(j).getWeight() < 0) {return list.get(j);//如果随机样本 > 对象[j] 中指定的概率数值 ,则认为此次随机 未命中在对象[j]上 ,刷新随机样本,继续下次循环} else {random -= list.get(j).getWeight();}}return null;}@Data@ToString@AllArgsConstructorpublic static class Prize {private Long id;private String prizeName;private Integer weight;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PythonNet,Csharp如何白嫖Python生态和使用Matplotlib

文章目录 前言PythonNet环境配置Python环境配置Csharp Nuget配置运行代码测试运行结果 总结 前言 我既然用Csharp去尝试学习机器视觉&#xff0c;我就想试试用Csharp去使用Python的库。 这个世界上有没有编程语言既有Python的开发效率&#xff0c;又有C/C/ PythonNet Pythonne…

9 | Tensorflow中的batch批处理

TensorFlow支持批处理(batch processing)。批处理是指同时处理多个样本或数据点而不是单个样本。在深度学习中,批处理通常用于提高训练的效率和稳定性。 在TensorFlow中,可以使用tf.data.Dataset API来设置和处理批处理数据。这允许以批处理的方式加载和处理数据,适用于训…

MySQL in和exists的取舍

in和exists的取舍 之前说过要小表驱动大表&#xff0c;即先遍历小表再遍历大表&#xff0c;接下来看一下in和exists的区别 in 先执行子查询&#xff0c;适合于外表大而内表小的情况 select * from A where id in (select id from B)等价于先遍历表B select id from B再遍历表A …

Android:JNI实战,加载三方库、编译C/C++

一.概述 Android Jni机制让开发者可以在Java端调用到C/C&#xff0c;也是Android应用开发需要掌握的一项重要的基础技能。 计划分两篇博文讲述Jni实战开发。 本篇主要从项目架构上剖析一个Android App如何通过Jni机制加载三方库和C/C文件。 二.Native C Android Studio可…

精准核酸检测 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 为了达到新冠疫情精准防控的需要&#xff0c;为了避免全员核酸检测带来的浪费&#xff0c;需要精准圈定可能被感染的人群。 现在根据传染病流调以及大数据分析&a…

✅枚举类型在技术派中的应用示例

在Java编程中&#xff0c;我们经常会遇到需要表示一组相关常量的情况。为了提高代码的可读性和可维护性&#xff0c;Java引入了枚举类型。本文将介绍枚举类型的基本概念&#xff0c;并通过一个实际的示例来说明如何在Java中使用枚举。 什么是枚举类型&#xff1f; 枚举类型是一…

【代码实战】从0到1实现transformer

获取数据 import pathlibimport tensorflow as tf# download dataset provided by Anki: https://www.manythings.org/anki/ text_file tf.keras.utils.get_file(fname"fra-eng.zip",origin"http://storage.googleapis.com/download.tensorflow.org/data/fra-…

// pure virtual function

// pure virtual function 总之,在原型中使用0指出类是一个抽象基类,在类中可以不定义该函数。 现在,可以从BaseEllipse 类派生出Ellips类和Circle类,添加所需的成员来完成每个类。需要注意的 点是,Circle类总是表示圆,而Ellipse类总是表示椭圆 -- 也可以是圆。不过,Ellipse类…

TS的基本类型!

基础类型 1.布尔值 最基本的数据类型就是简单的 true/false 值&#xff0c;在JavaScript 和 TypeScript 里叫做 boolean&#xff08;其它语言中也一样&#xff09;。 let isDone: boolean false; isDone true; // isDone 2 // error 2.数字number 和 JavaScript 一样&am…

laravel 中间件跨域自定义封装

laravel 跨域cors中间件封装 <?php namespace App\Http\Middleware;use Closure;class CorsMiddleware {/*** Handle an incoming request.** param \Illuminate\Http\Request $request* param \Closure $next* return mixed*/public function handle($request, Closu…

transdata笔记:手机数据处理

1 mobile_stay_duration 每个停留点白天和夜间的持续时间 transbigdata.mobile_stay_duration(staydata, col[stime, etime], start_hour8, end_hour20) 1.1 主要参数 staydata停留数据&#xff08;每一行是一条数据&#xff09;col 列名&#xff0c;顺序为[‘starttime’,…

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07-2 动态规划 Dynamic Programming

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-2 动态规划 Dynamic Programming 1. 基本概念2. 代码详解3. 简单一维案例 1. 基本概念 Richoard Bell man 最优化理论&#xff1a; An optimal policy has the …

纯C无操作系统轻量协程库Protothread使用记录

文章目录 目的源码说明使用演示总结 目的 在单片机开发中很多时候都是无操作系统环境&#xff0c;这时候如果要实现异步操作&#xff0c;并且流程逻辑比较复杂时处理起来会稍稍麻烦。这时候可以试试 Protothread 这个协程库。 官网&#xff1a; https://dunkels.com/adam/pt/…

年节安全网购温馨提示,请注意查收!

才庆祝完新年&#xff0c;又快迎来春节&#xff0c; 置办年货&#xff0c;喜气连连。 而对于网络犯罪分子而言&#xff0c;节假日往往是一年中快速掠取高额收益的绝佳机会。每逢节假日&#xff0c;不法分子便故技重施&#xff0c;依赖各类经典骗局诱骗缺乏戒备心的消费者。然…

深入剖析:Kafka流数据处理引擎的核心面试问题解析75问(5.7万字参考答案)

Kafka 是一款开源的分布式流处理平台&#xff0c;被广泛应用于构建实时数据管道、日志聚合、事件驱动的架构等场景。本文将深入探究 Kafka 的基本原理、特点以及其在实际应用中的价值和作用。 Kafka 的基本原理是建立在发布-订阅模式之上的。生产者将消息发布到主题&#xff08…

37-WEB漏洞-反序列化之PHPJAVA全解(上)

WEB漏洞-反序列化之PHP&JAVA全解&#xff08;上&#xff09; 一、PHP 反序列化原理二、案例演示2.1、无类测试2.1.1、本地2.1.2、CTF 反序列化小真题2.1.3、CTF 反序列化类似题 2.2、有类魔术方法触发2.2.1、本地2.2.2、网鼎杯 2020 青龙大真题 三、参考资料 一、PHP 反序列…

SpringMVC(八)处理AJAX请求

一、处理AJAX之准备工作: 首先我们创建一个新的工程: 我们将pom.xml复制过来: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-in…

【项目日记(三)】内存池的整体框架设计

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

MES管理系统为何成为汽配企业的刚需

随着经济全球化、产品定制化及安全法规的严格化&#xff0c;汽配企业的经营环境变得越来越复杂。中国劳动力资源和原辅料成本的持续上升&#xff0c;导致行业利润率不断下滑。为了应对这些挑战&#xff0c;汽配企业需要引入一种精益制造和管理的工具&#xff0c;而MES管理系统正…

高防CDN与dns结合有哪些优势

高防CDN与DNS结合有哪些优势 随着互联网技术的发展和应用的普及&#xff0c;网络安全问题也日益突出。为了保护网站免受恶意攻击和黑客的侵害&#xff0c;高防CDN与DNS结合被广泛应用于网络安全领域&#xff0c;具有许多优势。 首先&#xff0c;高防CDN与DNS结合可以有效减轻…