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个元素,并打印出来展示给用户。
我们今天就到这里,下次见吧!!!