算法:带权重随机算法

算法思想:对象权重 / 所有对象权重总和即每个对象相对应的概率

 public static void main(String[] args) throws IOException {//初始化每个人的权重//1.从文件中导入数据到集合BufferedReader br = new BufferedReader(new FileReader("D:\\zzz.txt"));//创建学生类集合ArrayList<Student> list = new ArrayList<>();//循环导入String str;while ((str = br.readLine()) != null) {//依次将字符串的内容录入到Student集合中Student stu = new Student();String[] arr = str.split("-");stu.setName(arr[0]);stu.setSex(arr[1]);stu.setAge(Integer.parseInt(arr[2]));stu.setWeight(Double.parseDouble(arr[3]));list.add(stu);}br.close();System.out.println(list);//2.计算学生的抽中概率//每个人的权重除以所有人的权重总和即每个人的概率//定义权重总和double weight = 0;for (Student student : list) {weight += student.getWeight();}System.out.println(weight);//3.定义数组存放每个人的概率double[] arr = new double[list.size()];arr[0] = list.get(0).getWeight() / weight;for (int i = 1; i < list.size(); i++) {arr[i] = arr[i - 1] + list.get(i).getWeight() / weight;}for (double v : arr) {System.out.print(v + " ");}System.out.println();//4.开始抽签,生成0-1之间的随机数,在哪个范围就是哪个人double random = Math.random();System.out.println(random);//5.查找在哪个范围内,用Arrays工具类的二分查找快速遍历//该类的二分查找细节:若在查找范围中找到对应数据则返回对应数据下标,//                  若在该插入位置中没有对应数据则该位置 负号下标 - 1//如:随机数0.4041886576958883此时应返回在[0.4-0.5)范围内的同学的下标,即4,而打印结果为-5,符合上面第二种情况,按照该规则计算数组下标即可// -下标 -1 = -5 => 下标 = 4int i = Arrays.binarySearch(arr, random);int index = -i -1;//6.打印抽到的同学,抽到的同学权重减半,减半后存入文件double halfWeight = list.get(index).getWeight() / 2;list.get(index).setWeight(halfWeight);System.out.println(list.get(index).getName());//7.依次将集合内容存回文件BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\zzz.txt"));for (Student student : list) {bw.write(student.toString());bw.newLine();}bw.close();}

 

 

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

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

相关文章

TCP流量控制+拥塞控制

流量控制&#xff1a; 目标&#xff1a;流量控制主要解决的是发送方和接收方之间处理能力的不匹配问题。它的目的是确保发送方不会发送数据过快&#xff0c;以至于接收方无法及时接收并处理这些数据&#xff0c;从而避免数据包在网络中堆积和丢失。实现方式&#xff1a;在TCP协…

【.NET Core】深入理解async 和 await 理解

【.NET Core】深入理解async 和 await 理解 文章目录 【.NET Core】深入理解async 和 await 理解一、概述二、async异步执行机制理解三、async与await应用3.1 async与await简单应用3.2 带有返回值async与await应用 四、async和await中常见问题总结4.1 当方法用async标识时&…

MySql5.7之ERROR 1045 (28000)问题处理

MySql5.7之ERROR 1045 (28000)问题处理 文章目录 MySql5.7之ERROR 1045 (28000)问题处理1. ERROR 1045 (28000)问题2.问题原因3. 解决方法(重置密码)1. 修改my.ini配置2. 修改密码3. 刷新权限4. 再次修改my.ini配置 1. ERROR 1045 (28000)问题 时隔多日连接MySQL时出现了"…

7条策略,提升可视化大屏的科技感,值得收藏。

以下是从设计角度上提升科技感的几条建议&#xff1a; 使用现代化的字体&#xff1a; 选择现代化的字体能够让大屏幕看起来更加科技感。比如&#xff0c;Sans-serif字体、Roboto字体、Lato字体等都是现代化的字体。 设计简洁、清晰的图表&#xff1a; 图表是可视化大屏设计中…

端口号被占用怎么解决

1、快捷键"winR"打开运行&#xff0c;在其中输入"cmd"命令&#xff0c;回车键打开命令提示符。 2、进入窗口后&#xff0c;输入"netstat -ano"命令&#xff0c;可以用来查看所有窗口被占用的情况。 比如端口号为7680的端口被占用了&#xff0c…

id生成相关工具类

目录 1. ID生成器工具类 -- IdUtils 2. 唯一识别码生成 -- UUID 1. ID生成器工具类 -- IdUtils /*** ID生成器工具类* */ public class IdUtils {/*** 获取随机UUID* * return 随机UUID*/public static String randomUUID(){return UUID.randomUUID().toString();}/*** 简…

一次失败的面试经历:我只想找个工作,你却用面试题羞辱我

金三银四就要来了&#xff0c;即将又是一波求职月&#xff0c;面对跳槽的高峰期&#xff0c;很多软件测试人员都希望能拿一个满意的高薪offer&#xff0c;但是随着招聘职位的不断增多&#xff0c;面试的难度也随之加大&#xff0c;而面试官更是会择优录取 小王最近为面试已经焦…

Docker 数据卷

Docker 数据卷 一、介绍二、数据卷的使用1 添加数据卷2 只读权限数据卷 一、介绍 数据卷就是目录或文件&#xff0c;用来与宿主机/容器共享数据的。 数据卷的生命周期一直持续到没有容器使用它为止。 二、数据卷的使用 1 添加数据卷 运行一个centos容器是直接添加 docker …

循环测试之旅 —— 深度解析Pytest插件 pytest-repeat!

在软件开发中&#xff0c;测试的重要性不言而喻。而为了提高测试的鲁棒性和可靠性&#xff0c;Pytest插件 pytest-repeat 应运而生。这个插件可以帮助你轻松实现测试用例的循环运行&#xff0c;以更全面地评估代码的稳定性。本文将深入介绍 pytest-repeat 插件的基本用法和实际…

msvcp140.dll丢失要怎么处理的一些解决方法,分享一些解决办法

在Windows操作系统中&#xff0c;有时候我们会遇到一些dll文件丢失或损坏的问题。其中一个常见的错误是"找不到msvcp140.dll"。这个错误会导致一些应用程序无法正常运行&#xff0c;给我们的电脑使用带来了很大的困扰。不用担心&#xff0c;今天我们就来说说由于找不…

OpenAI视频生成模型Sora的全面解析:从ViViT、扩散Transformer到NaViT、VideoPoet

前言 真没想到&#xff0c;距离视频生成上一轮的集中爆发(详见《视频生成发展史&#xff1a;从Gen2、Emu Video到PixelDance、SVD、Pika 1.0、W.A.L.T》)才过去三个月&#xff0c;没想OpenAI一出手&#xff0c;该领域又直接变天了 自打2.16日OpenAI发布sora以来(其开发团队包…

Java自旋锁

概念 自旋锁&#xff08;Spinlock&#xff09;是一种特殊的锁&#xff0c;用于解决多线程同步问题。与常规锁&#xff08;如synchronized关键字或ReentrantLock&#xff09;不同&#xff0c;自旋锁在尝试获取锁时&#xff0c;如果锁已经被其他线程持有&#xff0c;那么当前线程…

《剑指Offer》笔记题解思路技巧优化 Java版本——新版leetcode_Part_4

《剑指Offer》笔记&题解&思路&技巧&优化_Part_4 &#x1f60d;&#x1f60d;&#x1f60d; 相知&#x1f64c;&#x1f64c;&#x1f64c; 相识&#x1f622;&#x1f622;&#x1f622; 开始刷题1. LCR 148. 验证图书取出顺序——栈的压入、弹出序列2. LCR 14…

简单贪吃蛇模拟(C语言版本·)

简单贪吃蛇模拟&#xff08;C语言版本&#xff09; 一、所需win32 API知识二、游戏逻辑实现 一、所需win32 API知识 1.在这儿&#xff0c;直接弱化概念&#xff0c;把在贪吃蛇中用到的API知识说一下&#xff01;  1.1用cmd命令来设置控制台窗口的长宽   1.2.用title 指令…

如何使用Pycharm中的image模块以及导入打开图片(属性)

在学习pytorch深度学习的过程中&#xff0c;通常会使用到大量的数据集&#xff0c;包括训练集和测试集。 以下是pytorch加载数据集的流程&#xff1a; 在notebook中使用help方法查看Dataset类的功能以及操作&#xff1a; 使用dataset需要继承Dataset父类 重写__getitem__方法和…

Android使用shape定义带渐变色的背景

在drawable目录下创建文件bg_gradient.xml 文件内的内容如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <shape android:shape"rectangle" xmlns:android"http://schemas.android.com/apk/res/android"> <…

更换笔记本电脑内存条

写在前头 本人笔记本电脑早年购买&#xff0c;随着学习工作量的增大&#xff0c;我在使用电脑时往往需要同时打开多个软件&#xff0c;这时电脑的表现就难以言论了。虽然这个电脑在我的手中表现出其“志在千里”的鸿志&#xff08;毕竟它主人是谁里&#xff09;&#xff0c;但…

前端秘法基础式(CSS)(第二卷)

目录 一.字体 1.字体的设置 2.字体的颜色 2.1预定义的颜色值 2.2十六进制 2.3rgb表示法 3.字体粗细及样式 4.文本 4.1text-align 4.2text-indent 4.3text-decoration 二.背景属性 三.圆角矩形 四.元素显示模式 五.盒模型 六.弹性布局 七.Chrome调试工具 一.字…

普通人steam搬砖到底能不能做,一定谨记这4点

steam/csgo搬砖项目拥有小投资收益稳定的特点&#xff0c;多搬多赚&#xff0c;这个项目已存在很多年&#xff0c;是非常老牌的阳光项目&#xff0c;很多人比较关心普通人steam搬砖到底能不能做&#xff0c;这里想提醒你谨记这4点。 1&#xff1a;steam/csgo搬砖项目不需要玩游…

java.sql.SQLException: No operations allowed after statement closed.

背景 某天下午&#xff0c;客服反馈线上服务出现问题&#xff0c;不能分配了。于是我登录到系统上&#xff0c;进行同样的操作发现也不行。当然同时我已经登录到服务器打开了日志&#xff0c;发现报错了&#xff0c;下面就是日志的错误信息&#xff1a; java.sql.SQLExceptio…