java.util.Random类(详细案例拆解)(已完结)
前言:
小编打算近期更俩三期类的专栏,一些常用的专集类,给大家分好类别总结和详细的代码举例解释。
今天是除夕,小编先祝贺大家除夕快乐啦!!
今天是第六个 java.lang.Math 包中的 java.util.Random类
我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,
把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,
为什么用这串代码关键字,对比同类型的代码,
让大家真正看完以后融会贯通,举一反三,实践应用!!!!
①官方定义 和 大白话拆解对比
②举生活中常见贴合例子、图解辅助理解的形式
③对代码实例中关键部分进行详细拆解、总结
给小编一个赞或者关注吧,我们一起进步!!
官方语言解释
java.util.Random类提供了多种方法来生成不同类型的随机数:
- nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。
- nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的byte数组中。
- nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的double值。
- nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的float值。
- nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0,标准差是1.0。
- nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值。
- nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在0(包括)和指定值(不包括)之间均匀分布的int值。
- nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的long值。
大白话拆解:
简单来说,java.util.Random就是一个工具箱,里面有很多方法可以帮助我们生成各种类型的随机数。比如:
- 如果你想生成一个随机的真或假(true或false),你可以使用nextBoolean()。
- 如果你需要一些随机的数字,但这些数字必须是整数,你可以使用nextInt()。
- 如果你需要的随机数是一个小数,那么nextDouble()或nextFloat()就是你的选择。
- 如果你想要生成一些随机的字节数据,比如加密时需要的随机密钥,你可以使用nextBytes()。
- 如果你需要生成符合正态分布的随机数,比如模拟自然界的一些现象,你可以使用nextGaussian()。
举个栗子:
案例描述:
- 你正在参加一个商场举办的幸运大抽奖活动。商场决定从所有参与者中随机抽取10名幸运儿,每位幸运儿将获得一份奖品。为了简化这个例子,我们假设商场已经收集了所有参与者的编号(比如从1到500),现在需要从中随机选出10个不同的号码作为幸运号码。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;public class LuckyDraw {public static void main(String[] args) {// 假设总共有500位参与者,编号从1到500List<Integer> participants = new ArrayList<>();for (int i = 1; i <= 500; i++) {participants.add(i);}// 使用Random类来打乱参与者列表的顺序Collections.shuffle(participants, new Random());// 选择前10位作为幸运儿System.out.println("以下是本次抽奖的幸运儿编号:");for (int i = 0; i < 10; i++) {System.out.println("幸运儿 " + (i + 1) + ": 编号 " + participants.get(i));}}
}
代码解释和总结:
- 有一个装满了500个不同颜色小球的大盒子,每个小球上都有一个唯一的编号(从1到500)。现在,你想从中随机挑选出10个小球作为幸运儿。为了做到这一点,你可以按照下面的步骤来操作:
1. 创建参与者列表
List<Integer> participants = new ArrayList<>();
for (int i = 1; i <= 500; i++) {participants.add(i);
}
- 这一步就像是你把所有的小球一个个拿出来,并且按照顺序排列好。在这个例子中,我们创建了一个名为participants的列表,然后通过一个循环将数字1到500添加进这个列表里。这就相当于给每一个小球标上了它们的编号。
2、打乱顺序:
Collections.shuffle(participants, new Random());
- 接下来,我们需要模仿一个过程:把这些小球都放进一个大袋子里,然后用力摇晃袋子,让这些小球充分混合,这样它们的原始顺序就被打乱了。在这段代码中,我们使用Collections.shuffle()方法和Random类来实现这一过程。它会随机打乱participants列表中的元素顺序,确保每个小球被选中的机会是均等的。
3、. 选择前10位作为幸运儿
System.out.println("以下是本次抽奖的幸运儿编号:");
for (int i = 0; i < 10; i++) {System.out.println("幸运儿 " + (i + 1) + ": 编号 " + participants.get(i));
}
- 最后一步就是从已经被充分混合的小球中随机选出10个。由于我们已经通过打乱顺序模拟了随机抽取的过程,现在只需要依次从小球堆的顶部取出最上面的10个小球即可。在这个代码片段中,我们通过一个循环来获取打乱后的列表中的前10个元素,并打印出来展示给用户。
我们今天就到这里,下次见吧!!!
相关文章:
java.util.Random类(详细案例拆解)(已完结)
前言: 小编打算近期更俩三期类的专栏,一些常用的专集类,给大家分好类别总结和详细的代码举例解释。 今天是除夕,小编先祝贺大家除夕快乐啦!! 今天是第六个 java.lang.Math 包中的 java.util.Random类 我…...
Java后端之AOP
AOP:面向切面编程,本质是面向特定方法编程 引入依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>示例:记录…...
【信息系统项目管理师-选择真题】2008上半年综合知识答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7~8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16~20题】【第21题】【第22题】【第23题】【第24题】【第25题…...
go到底是什么意思:对go的猜测或断言
go这个单词,简单地讲,表示“走或去”的意思: go v.去;走 认真想想,go是一个非常神秘的单词,g-和o-这两个字母,为什么就会表达“去;走”的意思呢?它的字面义或本质&…...
零刻SER7接口及配置跑分
今天入手了一台迷你机-零刻SER7 ,不得不说这机身是真的小啊,相比于传统台式机,它几乎不占空间,可以轻松放置在桌面、电视柜甚至背包中,非常适合需要频繁移动或空间有限的用户。尽管体积小巧,但零刻SER7在性…...
【Java基础-41.5】深入解析Java异常链:构建清晰的错误追踪体系
在Java编程中,异常处理是保证程序健壮性和可维护性的重要部分。然而,在实际开发中,异常往往不是孤立发生的,而是由一系列相关的异常引发的。为了更好地理解和处理这种复杂的异常场景,Java引入了 异常链(Exc…...
【Python实现机器遗忘算法】复现2023年TNNLS期刊算法UNSIR
【Python实现机器遗忘算法】复现2023年TNNLS期刊算法UNSIR 1 算法原理 Tarun A K, Chundawat V S, Mandal M, et al. Fast yet effective machine unlearning[J]. IEEE Transactions on Neural Networks and Learning Systems, 2023. 本文提出了一种名为 UNSIR(Un…...
Object类(3)
大家好,今天继续给大家介绍一下object类中的方法,那么话不多说,来看。 hashcode()这个方法,帮我们算了一个具体的对象位置,这里面涉及到数据结构,简单认为它是个内存地址,然后调用Integer.toHexString ()将这个地址以16进制输出。 该方法是一…...
Zookeeper(32) Zookeeper的版本号(version)是什么?
在 Zookeeper 中,每个节点都有多个版本号(version),用于跟踪节点的状态变化。版本号帮助 Zookeeper 实现乐观并发控制,确保在并发环境中的数据一致性。主要的版本号包括: version:数据版本号&a…...
C# as 和 is 运算符区别和用法
前言 在C#中,as 和 is 关键字都用于处理类型转换的运算符,但它们有不同的用途和行为。本文我们将详细解释这两个运算符的区别和用法。 is 运算符 is 运算符用于检查对象是否是某个特定类型,或者是否可以转换为该类型。它返回一个布尔值 (t…...
求解旅行商问题的三种精确性建模方法,性能差距巨大
文章目录 旅行商问题介绍三种模型对比求解模型1决策变量目标函数约束条件Python代码 求解模型2决策变量目标函数约束条件Python代码 求解模型3决策变量目标函数约束条件Python代码 三个模型的优势与不足 旅行商问题介绍 旅行商问题 (Traveling Salesman Problem, TSP) 是一个经…...
SQL-leetcode—1193. 每月交易 I
1193. 每月交易 I 表:Transactions ---------------------- | Column Name | Type | ---------------------- | id | int | | country | varchar | | state | enum | | amount | int | | trans_date | date | ---------------------- id 是这个表的主键。 该表包含…...
【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作
Retrieve 检索 示例 1. 构造数据 创建表结构 create table exam1(id bigint, name varchar(20) comment同学姓名, Chinesedecimal(3,1) comment 语文成绩, Math decimal(3,1) comment 数学成绩, English decimal(3,1) comment 英语成绩 ); 插入测试数据 insert into ex…...
项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(九)(完结篇)
文章目录 一、成绩查询模块实现1、学生成绩查询功能实现1.1 页面设计1.2 前端页面实现1.3 后端功能实现2、成绩分段查询功能实现2.1 页面设计2.2 前端页面实现2.3 后端功能实现二、试卷练习模块实现三、我的分数模块实现1、 页面设计2、 前端页面实现3、 后端功能实现四、交流区…...
离散 VS 流程制造,制造业的 “双生花” 如何绽放
在制造业中,我们常看到两种不同生产景象:有的企业生产一气呵成,有的则由众多环节组合。 这源于离散制造和流程制造两种常见生产模式。它们在生产管理上特点与区别明显。 下面,我们从概念、特点、企业生产管理方式,以…...
freeswtch目录下modules.conf各个模块的介绍【freeswitch版本1.6.8】
应用模块(applications) mod_abstraction: 为其他模块提供抽象层,有助于简化模块开发,让开发者能在统一框架下开发新功能,减少与底层系统的直接交互,提高代码可移植性和可维护性。 mod_av&#…...
循序渐进kubernetes-RBAC(Role-Based Access Control)
文章目录 概要Kubernetes API了解 Kubernetes 中的 RBACRoles and Role Bindings:ClusterRoles and ClusterRoleBindings检查访问权限:外部用户结论 概要 Kubernetes 是容器化应用的强大引擎,但仅仅关注部署和扩展远远不够,集群的安全同样至…...
第3章 基于三电平空间矢量的中点电位平衡策略
0 前言 在NPC型三电平逆变器的直流侧串联有两组参数规格完全一致的电解电容,由于三电平特殊的中点钳位结构,在进行SVPWM控制时,在一个完整开关周期内,直流侧电容C1、C2充放电不均匀,各自存储的总电荷不同,电容电压便不均等,存在一定的偏差。在不进行控制的情况下,系统无…...
基于SpringBoot的阳光幼儿园管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Python 数据分析 - Matplotlib 绘图
Python 数据分析 - Matplotlib 绘图 简介绘图折线图单线多线子图 散点图直方图条形图纵置横置多条 饼图 简介 Matplotlib 是 Python 提供的一个绘图库,通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰富的统计图,安装使用 pip install…...
AI 编程时代来了:为什么每个开发者都要学会用 AI 写代码
2026 年,不会用 AI 写代码的开发者,就像 2010 年不会用 Google 的程序员一样——不是不能工作,而是效率会被远远甩在后面。先看一组数字 根据 GitHub 2026 年开发者调查报告: 73% 的开发者在工作中使用了 AI 编程工具55% 的代码由…...
VS2019调试配置报错解析:Designtime生成失败与IntelliSense不可用的深度排查指南
1. 问题现象与初步诊断 当你打开VS2019项目时突然弹出"配置Debug|Win32的Designtime生成失败,IntelliSense可能不可用"的红色错误提示,代码编辑窗口里的智能提示全部消失,连最基本的语法高亮都失效了——这种场景我遇到过不下20次。…...
【分箱进阶篇】分箱的工程细节:从训练到部署的完整模式
基础篇参考:【分箱基础篇】pandas 分箱双子星:pd.cut 与 pd.qcut 我们在基础篇讲了 pd.cut 和 pd.qcut 各自怎么用。但在实际项目里,分箱不是调一次函数就完事的。通常来说,训练集上算出来的切分点要保存下来,测试集…...
gte-base-zh在AIGC内容审核中的应用
gte-base-zh在AIGC内容审核中的应用 最近和几个做AIGC应用的朋友聊天,大家普遍反映一个头疼的问题:内容审核。用户生成的内容五花八门,数量巨大,单靠人工审核,不仅成本高,还容易漏掉一些打擦边球或者变着花…...
Qwen3-ASR-0.6B开发者案例:集成至CRM系统实现通话内容自动归档
Qwen3-ASR-0.6B开发者案例:集成至CRM系统实现通话内容自动归档 1. 项目背景与需求场景 在现代企业客户关系管理(CRM)系统中,通话录音是宝贵的业务数据资源。销售团队的客户沟通、客服中心的问题解决、业务洽谈的重要细节——所有…...
1985–2024年武汉大学CLCD中国土地利用/覆被数据集(逐年30米栅格)|高精度长时序LUCC产品
🔍 数据简介 CLCD(China Land Cover Dataset) 是由武汉大学测绘遥感信息工程国家重点实验室李熙教授、李德仁院士团队基于Landsat系列卫星影像,结合深度学习与多源辅助数据(如夜间灯光、POI、道路网等)&…...
试盘Z之主力操盘线
试盘K,以满足特定条件后对该K线标注为试盘字样方便查看。同时通达对9日最低值与9日最高值进行EMA移动平均,得出主力操盘线!试盘Z源码:X_1:REF(EMA((HLC)/3,9),1);X_2:EMA(HHV(HIGH,9),3);X_3:EMA(LLV(LOW,9),3);主力操盘线:EMA(X_1*2-X_3,5),…...
MT5中文增强工具多场景落地:保险条款通俗化改写与消费者理解度提升实践
MT5中文增强工具多场景落地:保险条款通俗化改写与消费者理解度提升实践 1. 项目概述与核心价值 MT5中文增强工具是一个基于Streamlit和阿里达摩院mT5模型构建的本地化NLP工具,专门针对中文文本进行语义改写和数据增强。这个工具的最大特点是能够在保持…...
W5500 TCP客户端实战:从寄存器配置到网络调试助手,手把手打通第一个连接
W5500 TCP客户端开发实战:从硬件连接到数据交互的全流程解析 第一次接触W5500芯片时,我盯着数据手册里密密麻麻的寄存器描述发呆了半小时——网关地址、子网掩码、Socket模式...这些概念对嵌入式开发者来说既熟悉又陌生。本文将带你用最直观的方式理解W…...
手把手教你用Llama-3.2V-11B-cot:像聊天一样轻松实现图片智能分析
手把手教你用Llama-3.2V-11B-cot:像聊天一样轻松实现图片智能分析 1. 引言:当视觉大模型遇上聊天式交互 想象一下,你正面对一张复杂的医学影像或工程图纸,需要快速理解其中的关键信息。传统方法可能需要专业培训或反复查阅资料&…...
