当前位置: 首页 > news >正文

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个元素,并打印出来展示给用户。



我们今天就到这里,下次见吧!!



http://www.lryc.cn/news/528311.html

相关文章:

  • Java后端之AOP
  • 【信息系统项目管理师-选择真题】2008上半年综合知识答案和详解
  • go到底是什么意思:对go的猜测或断言
  • 零刻SER7接口及配置跑分
  • 【Java基础-41.5】深入解析Java异常链:构建清晰的错误追踪体系
  • 【Python实现机器遗忘算法】复现2023年TNNLS期刊算法UNSIR
  • Object类(3)
  • Zookeeper(32) Zookeeper的版本号(version)是什么?
  • C# as 和 is 运算符区别和用法
  • 求解旅行商问题的三种精确性建模方法,性能差距巨大
  • SQL-leetcode—1193. 每月交易 I
  • 【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作
  • 项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(九)(完结篇)
  • 离散 VS 流程制造,制造业的 “双生花” 如何绽放
  • freeswtch目录下modules.conf各个模块的介绍【freeswitch版本1.6.8】
  • 循序渐进kubernetes-RBAC(Role-Based Access Control)
  • 第3章 基于三电平空间矢量的中点电位平衡策略
  • 基于SpringBoot的阳光幼儿园管理系统
  • Python 数据分析 - Matplotlib 绘图
  • uniapp版本升级
  • Django ORM解决Oracle表多主键的问题
  • 机器学习2 (笔记)(朴素贝叶斯,集成学习,KNN和matlab运用)
  • ubuntu解决普通用户无法进入root
  • Time Constant | RC、RL 和 RLC 电路中的时间常数
  • 数据结构测试题2
  • 在虚拟机里运行frida-server以实现对虚拟机目标软件的监测和修改参数(一)(android Google Api 35高版本版)
  • mysql_store_result的概念和使用案例
  • Linux进程调度与等待:背后的机制与实现
  • 网易云音乐歌名可视化:词云生成与GitHub-Pages部署实践
  • 单片机基础模块学习——DS18B20温度传感器芯片