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

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类(详细案例拆解)(已完结)

前言&#xff1a; 小编打算近期更俩三期类的专栏&#xff0c;一些常用的专集类&#xff0c;给大家分好类别总结和详细的代码举例解释。 今天是除夕&#xff0c;小编先祝贺大家除夕快乐啦&#xff01;&#xff01; 今天是第六个 java.lang.Math 包中的 java.util.Random类 我…...

【数据结构】动态内存管理函数

动态内存管理 为什么存在动态内存管理动态内存函数的介绍&#x1f38a;malloc补充&#xff1a;perror函数&#x1f38a;free&#x1f38a;calloc&#x1f38a;realloc 常见动态内存错误对空指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一…...

TVM框架学习笔记

TVM是陈天齐等人一个开源的深度学习编译器栈,用于优化和部署机器学习模型到各种硬件后端。它支持多种前端框架,如TensorFlow、PyTorch、ONNX等,并且可以在不同的硬件平台上运行,包括CPU、GPU和专用加速器。官方文档: Apache TVM Documentation — tvm 0.20.dev0 documenta…...

neo4j-community-5.26.0 install in window10

在住处电脑重新配置一下neo4j, 1.先至官方下载 Neo4j Desktop Download | Free Graph Database Download Neo4j Deployment Center - Graph Database & Analytics 2.配置java jdk jdk 21 官网下载 Java Downloads | Oracle 中国 path: 4.查看java -version 版本 5.n…...

macbook安装go语言

通过brew来安装go语言 使用brew命令时&#xff0c;一般都会通过brew search看看有哪些版本 brew search go执行后&#xff0c;返回了一堆内容&#xff0c;最下方展示 If you meant "go" specifically: It was migrated from homebrew/cask to homebrew/core. Cas…...

LCD液晶屏的工作原理以及背光模组

LCD液晶屏的工作原理以及背光模组 液晶屏工作原理 像素点的主要结构背光模组 LCD液晶屏主要由两部分组成&#xff0c;液晶屏和背光模组。背光模组提供均匀稳定的光源&#xff0c;液晶屏控制光线的传播路径&#xff0c;是屏幕显示设定的图像。 液晶屏 LCD的核心是两片玻璃之间…...

es数据同步

Logstash 是 Elastic 技术栈中的一个技术&#xff0c;它是一个数据采集引擎&#xff0c;可以从数据库采集数据到 ES 中。可以通过设置 自增 ID 主键 或 更新时间 来控制数据的自动同步&#xff1a; 自增 ID 主键&#xff1a;Logstatsh 会有定时任务&#xff0c;如果发现有主键…...

maven的打包插件如何使用

默认的情况下&#xff0c;当直接执行maven项目的编译命令时&#xff0c;对于结果来说是不打第三方包的&#xff0c;只有一个单独的代码jar&#xff0c;想要打一个包含其他资源的完整包就需要用到maven编译插件&#xff0c;使用时分以下几种情况 第一种&#xff1a;当只是想单纯…...

【Elasticsearch】中数据流需要配置索引模板吗?

是的&#xff0c;数据流需要配置索引模板。在Elasticsearch中&#xff0c;数据流&#xff08;Data Streams&#xff09;是一种用于处理时间序列数据的高级结构&#xff0c;它背后由多个隐藏的索引组成&#xff0c;这些索引被称为后备索引&#xff08;Backing Indices&#xff0…...

Controller 层优化四步曲

Controller 层优化四步曲 前言 在开发过程中&#xff0c;Controller 层作为系统与外界交互的桥梁&#xff0c;承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而&#xff0c;随着业务复杂度的增加&#xff0c;Controller 层的代码往往会变得臃肿且难以维护。 …...

Java后端之AOP

AOP&#xff1a;面向切面编程&#xff0c;本质是面向特定方法编程 引入依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>示例&#xff1a;记录…...

中文输入法方案

使用了三年的自然码双拼&#xff0c;毫无疑问是推荐使用双拼输入法。 三年积累下来的习惯是&#xff1a; 1 自然码方案 2 空格出字 字母选字 直到如今&#xff0c;想要做出改变&#xff0c;是因为这样的方案带来的痛点&#xff1a; 1 使用空格出字就无法使用辅助码&#…...

Elasticsearch中的度量聚合:深度解析与实战应用

在大数据和实时分析日益重要的今天&#xff0c;Elasticsearch以其强大的搜索和聚合能力&#xff0c;成为了众多企业和开发者进行数据分析和处理的首选工具。本文将深入探讨Elasticsearch中的度量聚合&#xff08;Metric Aggregations&#xff09;&#xff0c;展示其如何在数据分…...

Julius AI 人工智能数据分析工具介绍

Julius AI 是一款由 Casera Labs 开发的人工智能数据分析工具&#xff0c;旨在通过自然语言交互和强大的算法能力&#xff0c;帮助用户快速分析和可视化复杂数据。这款工具特别适合没有数据科学背景的用户&#xff0c;使数据分析变得简单高效。 核心功能 自然语言交互&#x…...

乌兰巴托的夜---音乐里的故事

不知道你有没有听过《乌兰巴托的夜》。 《乌兰巴托的夜Ulaanbaatariin udesh》其实是蒙古国的流行歌曲&#xff0c;1980年代创作&#xff0c;以蒙古国首都乌兰巴托&#xff08;Ulaanbaatar&#xff09;的夜晚为背景&#xff0c;表现恋爱中的男女青年爱情的抒情小夜曲&#xff…...

机器学习day4

自定义数据集 使用pytorch框架实现逻辑回归并保存模型&#xff0c;然后保存模型后再加载模型进行预测 import numpy as np import torch import torch.nn as nn import torch.optim as optimizer import matplotlib.pyplot as pltclass1_points np.array([[2.1, 1.8],[1.9, 2…...

LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)

HC-05 蓝牙模块简介 功能&#xff1a;支持串口通信的蓝牙模块&#xff0c;广泛应用于无线数据传输。支持 AT 指令配置。 接口&#xff1a;UART 通信&#xff0c;默认波特率为 9600bps。 应用&#xff1a;无线调试、数据传输、无线控制等。 硬件连接 HC-05 引脚功能STM32 连…...

如何部署 Flask 应用程序到生产环境?

在生产环境中部署 Flask 应用程序需要考虑稳定性、安全性、可扩展性和性能。以下是 Flask 应用的常见生产部署方法及最佳实践&#xff1a; 1. 选择部署方式 常见的 Flask 生产环境部署方式包括&#xff1a; 部署方式适用场景说明Gunicorn Nginx适合中小型项目轻量级&#xf…...

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》029-组件的数据注入

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…...

Redis学习之哨兵二

一、API 1.sentinel masters:展示被监控的主节点状态及相关的统计信息 2.sentinel master <master name>:展示指定的主节点的状态以及相关的统计信息 3.sentinel slaves <master name>:展示指定主节点的从节点状态以及相关的统计信息 4.sentinel sentinels <mas…...

【Linux基础指令】第二期

本期博客的主题依旧是 "基础指令" &#xff1b; 上一期的基础指令链接&#xff1a; 【Linux基础指令】第一期-CSDN博客 &#xff0c;话不多说&#xff0c;正文开始&#xff1a; 一、Linux的指令 1.cp 拷贝功能&#xff1a; cp [stc] [dest] # 将 src文件 拷贝到…...

SpringBoot的细节问题

一、重点填空 Pivotal 团队在原有 spring 框架的基础上开发了全新的Spring Boot框架。Spring Boot框架在开发过程中大量使用 约定优于配置 的思想来摆脱框架中各种复杂的手动配置。Spring Boot 2.1.3版本要求 Java 8 及以上版本的支持。Spring Boot2.1.3版本框架官方声明支持的…...

JavaScript系列(46)-- WebGL图形编程详解

JavaScript WebGL图形编程详解 &#x1f3a8; 今天&#xff0c;让我们深入探讨JavaScript的WebGL图形编程。WebGL是一种基于OpenGL ES的JavaScript API&#xff0c;它允许我们在浏览器中渲染高性能的2D和3D图形。 WebGL基础概念 &#x1f31f; &#x1f4a1; 小知识&#xff…...

MySQL(表空间)

​开始前先打开此图配合食用 MySQL表空间| ProcessOn免费在线作图,在线流程图,在线思维导图 InnoDB 空间文件中的页面管理 后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都…...

C26.【C++ Cont】动态内存管理和面向对象的方式实现链表

&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;除夕篇&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8;&#x1f9e8; 目录 1.知识回顾…...

使用numpy自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预

1. 引言 逻辑回归&#xff08;Logistic Regression&#xff09;是一种常见的分类算法&#xff0c;广泛应用于二分类问题。在本篇博客中&#xff0c;我们将使用numpy生成一个简单的自定义数据集&#xff0c;并使用TensorFlow框架构建和训练逻辑回归模型。训练完成后&#xff0c…...

Java Web 开发基础介绍

Java学习资料 Java学习资料 Java学习资料 一、引言 在当今数字化时代&#xff0c;Web 应用无处不在。Java 凭借其强大的功能、良好的跨平台性和丰富的开发框架&#xff0c;成为 Web 开发领域的热门选择之一。Java Web 开发允许开发者构建动态、交互式的 Web 应用程序&#x…...

求解旅行商问题的三种精确性建模方法,性能差距巨大

文章目录 旅行商问题介绍三种模型对比求解模型1决策变量目标函数约束条件Python代码 求解模型2决策变量目标函数约束条件Python代码 求解模型3决策变量目标函数约束条件Python代码 三个模型的优势与不足 旅行商问题介绍 旅行商问题 (Traveling Salesman Problem, TSP) 是一个经…...

C++:多继承习题3

题目内容&#xff1a; 声明一个时间类Time&#xff0c;时间类中有3个私有数据成员(Hour&#xff0c;Minute&#xff0c;Second)和两个公有成员函数(SetTime和PrintTime)。要求&#xff1a; &#xff08;1&#xff09; SetTime根据传递的3个参数为对象设置时间&#xff1b; &a…...

低代码系统-产品架构案例介绍、得帆云(八)

产品名称 得帆云DeCode低代码平台-私有化 得帆云DeMDM主数据管理平台 得帆云DeCode低代码平台-公有云 得帆云DePortal企业门户 得帆云DeFusion融合集成平台 得帆云DeHoop数据中台 名词 概念 云原生 指自己搭建的运维平台&#xff0c;区别于阿里云、腾讯云 Dehoop 指…...