31-Java 中的 Random 类
你好,我是悦创。
我们来系统学习 Java 中的 Random
类及其用法。Java 提供了 java.util.Random
类用于生成随机数,它是基础随机数生成工具之一。
1. 引入 Random 类
在使用 Random
类之前,需要引入它:
import java.util.Random;
2. 创建Random对象
创建 Random
类对象有两种方法:
2.1 无种子构造方法
使用 无参数 构造方法,它会根据当前时间自动生成一个种子:
Random random = new Random();
2.2 带种子构造方法
带有种子的构造方法可以生成可重复的随机数(用于调试):
Random random = new Random(12345); // 12345 是种子值
3. Random类的常用方法
3.1 nextInt()
生成一个 任意范围的整数。
int num = random.nextInt();
System.out.println(num); // 输出一个任意范围的整数
3.2 nextInt(int bound)
生成一个 0 到 bound-1 范围内 的随机整数:
int num = random.nextInt(10); // [0, 9]
System.out.println(num);
3.3 nextDouble()
生成一个 0.0 到 1.0 之间的随机小数(double类型):
double num = random.nextDouble();
System.out.println(num);
3.4 nextBoolean()
随机生成 true
或 false
:
boolean flag = random.nextBoolean();
System.out.println(flag);
3.5 nextFloat()
生成一个 0.0 到 1.0 之间的随机小数(float类型):
float num = random.nextFloat();
System.out.println(num);
3.6 nextLong()
生成一个 随机的long类型的整数:
long num = random.nextLong();
System.out.println(num);
3.7 生成指定范围的随机数
如果要生成指定范围内的随机数,例如 [min, max],可以这样做:
int min = 5;
int max = 15;
int num = min + random.nextInt(max - min + 1);
System.out.println(num);
4. 示例代码:随机数的综合生成
import java.util.Random;
public class RandomExample {
public static void main(String[] args) {
Random random = new Random();
// 生成0到9之间的随机整数
int randomInt = random.nextInt(10);
System.out.println("0到9之间的随机整数: " + randomInt);
// 生成随机小数 [0.0, 1.0)
double randomDouble = random.nextDouble();
System.out.println("随机小数 (0.0 - 1.0): " + randomDouble);
// 生成随机布尔值
boolean randomBoolean = random.nextBoolean();
System.out.println("随机布尔值: " + randomBoolean);
// 生成指定范围的随机整数 [10, 20]
int min = 10, max = 20;
int rangedInt = min + random.nextInt(max - min + 1);
System.out.println("10到20之间的随机整数: " + rangedInt);
// 生成long类型随机数
long randomLong = random.nextLong();
System.out.println("随机long类型数: " + randomLong);
}
}
输出示例:
0到9之间的随机整数: 4
随机小数 (0.0 - 1.0): 0.234567
随机布尔值: true
10到20之间的随机整数: 15
随机long类型数: -3456789021234567890
5. 常见应用场景
- 生成随机密码或字符串: 结合字符数组与
Random
实现随机字符串。 - 模拟随机事件: 例如掷骰子、抛硬币等。
- 随机抽取数据: 例如从集合中随机取出元素。
- 生成随机数用于游戏开发: 例如生成怪物攻击力、地图坐标等。
6. 随机字符串示例
以下是生成随机字符串(如密码)的示例:
import java.util.Random;
public class RandomString {
public static void main(String[] args) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
int length = 8; // 指定随机字符串的长度
Random random = new Random();
StringBuilder result = new StringBuilder();
for (int i = 0; i < length; i++) {
int index = random.nextInt(characters.length());
result.append(characters.charAt(index));
}
System.out.println("生成的随机字符串: " + result.toString());
}
}
输出示例:
生成的随机字符串: a9FhT2Lm
7. 总结
- 引入
java.util.Random
类。 - 使用
Random
对象生成各种类型的随机数。 - 根据需求生成指定范围或格式的随机数。
- 结合循环等方法,可以实现更复杂的随机场景。
8. 速查表格
方法 | 返回值类型 | 作用 | 代码示例 |
---|---|---|---|
nextInt() | int | 生成一个任意范围的整数 | int num = random.nextInt(); |
nextInt(int bound) | int | 生成 [0, bound-1] 范围内的随机整数 | int num = random.nextInt(10); // 0-9 |
nextDouble() | double | 生成 [0.0, 1.0) 范围的随机小数 | double num = random.nextDouble(); |
nextFloat() | float | 生成 [0.0, 1.0) 范围的随机小数 | float num = random.nextFloat(); |
nextBoolean() | boolean | 随机生成 true 或 false | boolean flag = random.nextBoolean(); |
nextLong() | long | 生成一个任意范围的 long 类型随机数 | long num = random.nextLong(); |
指定范围的随机数 | int | 生成 [min, max] 范围的随机整数 | int num = min + random.nextInt(max - min + 1); |
随机字符串生成 | String | 生成一个固定长度的随机字符串 | String chars = "abc"; chars.charAt(random.nextInt(chars.length())); |
9. 生成指定范围的随机数讲解
在 Java 中,Random
类的 nextInt(int bound)
方法默认生成 [0, bound-1]
范围内的随机整数。如果要生成指定范围 [min, max]
的随机数,可以通过以下公式实现:
int randomNumber = min + random.nextInt(max - min + 1);
9.1 公式推导
random.nextInt(n)
:默认会生成[0, n-1]
范围的整数,n
是一个正整数。为了生成
[min, max]
范围的整数,我们将目标范围[min, max]
的大小定义为:范围大小 = max - min + 1
max - min
表示max
与min
之间的差值(即区间内的元素个数减1)。- 加
1
是因为范围是 闭区间,包括了max
本身。 - 具体例子:
- 我要取:2~6之间的随机整数,也就是:
[2, 3, 4, 5, 6]
一共 5 个元素;「min:2、max:6」 - 要计算有几个元素: 差一个元素,所以需要 ;
- 我要取:2~6之间的随机整数,也就是:
random.nextInt(max - min + 1)
:会生成[0, max - min]
范围内的整数。加上
min
:将[0, max - min]
范围整体平移到[min, max]
范围。randomNumber = min + random.nextInt(max - min + 1);
9.2 示例:推导 [5, 15]
的随机数
max = 15
,min = 5
。- 范围大小:
15 - 5 + 1 = 11
。 random.nextInt(11)
:生成[0, 10]
范围的整数。- 加上
5
:结果范围变为[5, 15]
。
9.3 示例代码:生成指定范围的随机数
import java.util.Random;
public class RandomRangeExample {
public static void main(String[] args) {
Random random = new Random();
int min = 5;
int max = 15;
// 生成 [min, max] 范围的随机数
int randomNumber = min + random.nextInt(max - min + 1);
System.out.println("生成的随机数 (范围: " + min + " 到 " + max + "): " + randomNumber);
}
}
9.4 输出示例
生成的随机数 (范围: 5 到 15): 12
9.5 总结
- 使用
nextInt(int bound)
方法实现基本随机数生成。 - 通过公式
min + random.nextInt(max - min + 1)
可以灵活生成[min, max]
范围的随机整数。 - 关键点:
max - min + 1
计算出范围的大小。- 加
min
将结果平移到目标范围。
欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!
公众号:AI悦创【二维码】

AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
