Java实现抢红包算法——详细注释,标准语法

package learn;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class RobRedPacket {// 发红包算法,金额参数以分为单位public static List<Integer> divideRedPacket(Integer totalAmount, Integer totalPeopleNum) {List<Integer> amountList = new ArrayList<>();// 剩余金额Integer restAmount = totalAmount;// 剩余没抢的人数Integer restPeopleNum = totalPeopleNum;Random random = new Random();for (int i = 0; i < totalPeopleNum - 1; i++) {// 随机范围:[1,剩余人均金额的两倍),左闭右开int amount = random.nextInt(restAmount / restPeopleNum * 2 - 1) + 1;// 扣钱restAmount -= amount;// 修改人数restPeopleNum--;// 得到此次抢到的金额amountList.add(amount);}// 缺陷:最后一个人拿到的红包不是均分的amountList.add(restAmount);return amountList;}public static void main(String[] args) {List<Integer> amountList = divideRedPacket(5000, 30);for (Integer amount : amountList) {System.out.println("抢到金额:" +new BigDecimal(amount).divide(new BigDecimal(100)));}}
}

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

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

相关文章

电机控制系列模块解析(23)—— 同步机初始位置辨识

一、两个常见问题 为什么感应电机&#xff08;异步机&#xff09;不需要初始位置辨识&#xff1f;&#xff08;因此感应电机转子磁场在定子侧进行励磁&#xff0c;其初始位置可以始终人为定义为0&#xff09; 为什么同步磁阻电机需要初始位置辨识&#xff1f;&#xff08;因为…

【前端每日基础】day22——js控制结构

循环语句用于重复执行代码块。 for 循环 常用于需要精确控制循环次数的情况。 for (let i 0; i < 5; i) {console.log("Iteration:", i); }while 循环 当条件为真时重复执行代码块&#xff0c;适用于循环次数不确定但条件明确的情况。 let i 0;while (i <…

五分钟搭建一个Suno AI音乐站点

五分钟搭建一个Suno AI音乐站点 在这个数字化时代&#xff0c;人工智能技术正以惊人的速度改变着我们的生活方式和创造方式。音乐作为一种最直接、最感性的艺术形式&#xff0c;自然也成为了人工智能技术的应用场景之一。今天&#xff0c;我们将以Vue和Node.js为基础&#xff…

【软件设计师】计算机组成原理

1、数据的表示 1.1 进制转换 整型有4种进制形式&#xff1a; 1.十进制&#xff08;D&#xff09;&#xff1a; 都是以0-9这九个数字组成&#xff0c;不能以0开头。 2.二进制&#xff08;B&#xff09;&#xff1a; 由0和1两个数字组成。 3.八进制&#xff08;O&#xff09;&am…

嵌入式进阶——数码管

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 数码管结构移位寄存器原理图移位寄存器数据流程移位寄存器控制流程移位寄存器串联实现数码管显示 数码管结构 共阴与共阳 共阳数码…

前端后端是什么

前端和后端是软件开发中的两个主要部分&#xff0c;它们共同构成了一个完整的应用程序或网站。下面是对前端和后端的简要介绍&#xff1a; 前端&#xff08;Frontend&#xff09; 前端开发指的是应用程序或网站用户界面&#xff08;UI&#xff09;和用户体验&#xff08;UX&a…

sudo和su都莫名其妙无法使用时

不要慌&#xff0c;因为大部分解答都需要sudo去申请权限&#xff0c;所以我们只能重启进入grub界面。 重启时按住shift或者esc,进入后&#xff0c;按↓选中advanced options&#xff0c;enter 点e进入cmd 在输入你的密码后&#xff0c;按照步骤输入&#xff1a; mount -o r…

ESP8266,51单片机,ESP32,Arduino,STM32系列,Raspberry Pi 对比,异同点分析,优势分析和代表产品

下面是您提到的几款单片机的详细介绍&#xff0c;包括它们的应用场景、区别、优势和代表产品&#xff1a; 1. ESP8266 应用场景&#xff1a;主要用于WiFi联网项目&#xff0c;如智能家居设备、IoT传感器和无线控制。优势&#xff1a;低成本、内置Wi-Fi功能、低功耗模式&#…

linux centos循环ping网段ip

循环ping&#xff0c;检测ip是否可用&#xff0c;ping通为正在使用yes&#xff0c;no为不通 vim test.sh#!/bin/bash ip"192.168.1."echo "ping log:" > ./ping.txt for i in {1..128} doping -c 1 -w 1 -W 1 $ip$i | grep -q "ttl" &&a…

机器学习KNN算法-鸢尾花分类背后技术详解

引言 K-最近邻&#xff08;KNN&#xff09;算法是一种简单而有效的分类方法&#xff0c;广泛应用于各种分类任务中。本文将详细介绍KNN算法在鸢尾花分类任务中的应用&#xff0c;并通过代码示例来展示其背后的技术精髓。我们将分三大部分来展开&#xff0c;本部分将重点介绍KN…

Android跨进程通信--Binder机制及AIDL是什么?

文章目录 Binder机制Binder是什么&#xff1f;Binder相对于其他几种跨进程通信方式&#xff0c;有什么区别&#xff1f;谈一下 Binder IPC 通信过程&#xff1a;具体的通讯过程是什么&#xff1f;Binder如何处理发送请求与接收请求?Binder是通过什么方式来进行内存映射的&…

linux入门到精通-第十九章-libevent(开源高性能事件通知库)

目录 参考什么是libevent应用核心实现libevent的地基event_base等待事件产生&#xff0c;循环监听event_loop退出循环监听event_base_loopexit创建事件工作流程 安装一&#xff08;源码安装&#xff0c;推荐&#xff09;现在源码配置编译安装验证安装 安装二&#xff08;可能因…

KingbaseES数据库merge语法

数据库版本&#xff1a;KingbaseES V008R006C008B0014 简介 MERGE 语句是一种用于数据操作的 SQL 语句&#xff0c;它能够根据指定的条件将 INSERT、UPDATE 和 DELETE 操作结合到单个语句中。其主要作用是在目标表和源表之间进行数据比较和同步&#xff0c;根据条件的匹配情况来…

高效并发编程:Java阻塞队列深度解析与最佳实践

1.阻塞队列的基本概念与应用场景 1.1 阻塞队列的定义 阻塞队列&#xff08;BlockingQueue&#xff09;是Java并发包中的一个接口&#xff0c;它支持两个附加操作&#xff1a;当队列为空时&#xff0c;获取元素的线程会等待队列变为非空&#xff1b;当队列满时&#xff0c;存储…

RAG概述(二):Advanced RAG 高级RAG

目录 概述 Advanced RAG Pre-Retrieval预检索 优化索引 增强数据粒度 粗粒度 细粒度 展开说说 优化索引 Chunk策略 Small2Big方法 元数据 引入假设性问题 对齐优化 混合检索 查询优化 查询扩展 查询转换 Post-Retrieval后检索 参考 概述 Native RAG&#…

转义字符知识点

转义字符的使用 什么是转义字符&#xff1f; 它是字符串的一部分&#xff0c;用来表示一些特殊含义的字符 比如&#xff1a;在字符串中表现&#xff0c;单引号&#xff0c;引号&#xff0c;空行等等 固定写法 \字符 不同的\和字符的组合表示不同的含义. 常用的转义字符 附…

关于Springboot同时上传文件与其他参数

Springboot同时上传文件与其他参数 http请求数据传递分为请求体和请求参数。跟在url后面的为请求参数&#xff0c;文件上传和json数据放在请求体中。请求参数格式固定&#xff0c;后台可直接解析&#xff1b;请求体中的数据后台需要根据content-type字段按照特定格式解析。con…

shell从入门到精通(23)贪婪匹配、非贪婪以及独占模式

文章目录 贪婪与非贪婪的区别示例贪婪匹配的特点--自动回溯以满足匹配独占模式总结贪婪与非贪婪的区别 在正则表达式中,贪婪匹配和非贪婪匹配是指匹配模式下的不同行为。 贪婪匹配: 贪婪匹配会尽可能多地匹配符合模式的字符。换句话说,它会一直匹配直到无法再匹配为止。例…

springboot vue 开源 会员收银系统 (4) 门店模块开发

前言 完整版演示 前面我们对会员系统 springboot vue 开源 会员收银系统 (3) 会员管理的开发 实现了简单的会员添加 下面我们将从会员模块进行延伸 门店模块的开发 首先我们先分析一下常见门店的管理模式 常见的管理形式为总公司 - 区域管理&#xff08;若干个门店&#xff…

Java实现插入排序、冒泡排序、堆排序、希尔排序、选择排序、优先队列排序、快速排序、归并排序(详细注释,原理解析)

插入排序 package learn;import java.util.Arrays;/** 每次都将当前元素插入到左侧已经排序的数组中&#xff0c;使得插入之后左侧数组依然有序。* 速度优于选择排序*/ public class InsertSort {public static void insertSort(int[] a) {int n a.length;for (int i 1; i &…