当前位置: 首页 > 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到500
        List<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.kler.cn/a/524128.html

相关文章:

  • Node.js 的底层原理
  • 推动知识共享的在线知识库实施与优化指南
  • 128周二复盘(164)学习任天堂
  • 【C语言练习题】找出不是两个数组共有的元素
  • 中文输入法方案
  • 基于物联网的火灾报警器设计与实现(论文+源码)
  • 面试经典150题——图
  • 宫本茂的游戏设计思想:有趣与风格化
  • FreeRTOS从入门到精通 第十一章(FreeRTOS时间管理)
  • doris:JSON
  • LLM架构与优化:从理论到实践的关键技术
  • [MySQL]事务的理论、属性与常见操作
  • Web实训项目-ToDoSystem项目
  • 区块链在能源行业的应用场景
  • 基于FPGA的BT656解码
  • Elasticsearch+kibana安装(简单易上手)
  • 几种K8s运维管理平台对比说明
  • SQL注入漏洞之 提交方式类型注入 Get分类 Post分类 Cookie分类 请求数据位置分类 请求行 请求头 请求数据分类 靶场练习
  • 【Leetcode刷题记录】45. 跳跃游戏 II--贪心算法
  • 【算法】经典博弈论问题——斐波那契博弈 + Zeckendorf 定理 python
  • 中文输入法方案
  • CH32V303RCT6使用RTOS的选择对比
  • 深入理解 C 语言函数指针的高级用法:(void (*) (void *)) _IO_funlockfile
  • 对游戏宣发的粗浅思考
  • LabVIEW开发故障诊断
  • 虚幻基础06:cast to