Skip to content

Commit 1e86aed

Browse files
committed
/Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/32.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/23.assets /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/23.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/24.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/25.assets /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/25.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/26.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/27.assets /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/27.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/28.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/29.assets /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/29.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/30.assets /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/30.md /Users/huangjiabao/bornforthis.cn/docs/column/Java/chapter02/31.md
1 parent 7c6267f commit 1e86aed

File tree

8 files changed

+1610
-19
lines changed

8 files changed

+1610
-19
lines changed

src/Java/.DS_Store

0 Bytes
Binary file not shown.
65.9 KB
Loading
61.2 KB
Loading

src/Java/chapter02/29.md

Lines changed: 605 additions & 12 deletions
Large diffs are not rendered by default.
585 KB
Loading

src/Java/chapter02/30.md

Lines changed: 640 additions & 7 deletions
Large diffs are not rendered by default.

src/Java/chapter02/31.md

Lines changed: 292 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,292 @@
1+
---
2+
title: 31-Java 中的 Random 类
3+
date: 2024-12-18 08:05:27
4+
icon: java
5+
author: AI悦创
6+
isOriginal: true
7+
category:
8+
- Java体系课
9+
tag:
10+
- Java体系课
11+
sticky: false
12+
star: false
13+
article: true
14+
timeline: true
15+
image: false
16+
navbar: true
17+
sidebarIcon: true
18+
headerDepth: 5
19+
comment: true
20+
lastUpdated: true
21+
editLink: false
22+
backToTop: true
23+
toc: true
24+
footer: 长期招收编程一对一学员!微信:Jiabcdefh, <a href="https://beian.miit.gov.cn/" target="_blank">闽ICP备19021486号-6</a>
25+
---
26+
27+
你好,我是悦创。
28+
29+
我们来系统学习 **Java** 中的 `Random` 类及其用法。Java 提供了 `java.util.Random` 类用于生成随机数,它是基础随机数生成工具之一。
30+
31+
32+
33+
## 1. 引入 Random 类
34+
35+
在使用 `Random` 类之前,需要引入它:
36+
37+
```java
38+
import java.util.Random;
39+
```
40+
41+
42+
43+
## 2. 创建Random对象
44+
45+
创建 `Random` 类对象有两种方法:
46+
47+
### 2.1 无种子构造方法
48+
49+
使用 **无参数** 构造方法,它会根据当前时间自动生成一个种子:
50+
51+
```java
52+
Random random = new Random();
53+
```
54+
55+
### 2.2 带种子构造方法
56+
57+
带有种子的构造方法可以生成可重复的随机数(用于调试):
58+
59+
```java
60+
Random random = new Random(12345); // 12345 是种子值
61+
```
62+
63+
64+
65+
## 3. Random类的常用方法
66+
67+
### 3.1 nextInt()
68+
69+
生成一个 **任意范围的整数**
70+
71+
```java
72+
int num = random.nextInt();
73+
System.out.println(num); // 输出一个任意范围的整数
74+
```
75+
76+
### 3.2 nextInt(int bound)
77+
78+
生成一个 **0 到 bound-1 范围内** 的随机整数:
79+
80+
```java
81+
int num = random.nextInt(10); // [0, 9]
82+
System.out.println(num);
83+
```
84+
85+
### 3.3 nextDouble()
86+
87+
生成一个 **0.0 到 1.0** 之间的随机小数(double类型):
88+
89+
```java
90+
double num = random.nextDouble();
91+
System.out.println(num);
92+
```
93+
94+
### 3.4 nextBoolean()
95+
96+
随机生成 `true``false`
97+
98+
```java
99+
boolean flag = random.nextBoolean();
100+
System.out.println(flag);
101+
```
102+
103+
### 3.5 nextFloat()
104+
105+
生成一个 **0.0 到 1.0** 之间的随机小数(float类型):
106+
107+
```java
108+
float num = random.nextFloat();
109+
System.out.println(num);
110+
```
111+
112+
### 3.6 nextLong()
113+
114+
生成一个 **随机的long类型的整数**
115+
116+
```java
117+
long num = random.nextLong();
118+
System.out.println(num);
119+
```
120+
121+
### 3.7 生成指定范围的随机数
122+
123+
如果要生成指定范围内的随机数,例如 **[min, max]**,可以这样做:
124+
125+
```java
126+
int min = 5;
127+
int max = 15;
128+
int num = min + random.nextInt(max - min + 1);
129+
System.out.println(num);
130+
```
131+
132+
133+
134+
## 4. 示例代码:随机数的综合生成
135+
136+
```java
137+
import java.util.Random;
138+
139+
public class RandomExample {
140+
public static void main(String[] args) {
141+
Random random = new Random();
142+
143+
// 生成0到9之间的随机整数
144+
int randomInt = random.nextInt(10);
145+
System.out.println("0到9之间的随机整数: " + randomInt);
146+
147+
// 生成随机小数 [0.0, 1.0)
148+
double randomDouble = random.nextDouble();
149+
System.out.println("随机小数 (0.0 - 1.0): " + randomDouble);
150+
151+
// 生成随机布尔值
152+
boolean randomBoolean = random.nextBoolean();
153+
System.out.println("随机布尔值: " + randomBoolean);
154+
155+
// 生成指定范围的随机整数 [10, 20]
156+
int min = 10, max = 20;
157+
int rangedInt = min + random.nextInt(max - min + 1);
158+
System.out.println("10到20之间的随机整数: " + rangedInt);
159+
160+
// 生成long类型随机数
161+
long randomLong = random.nextLong();
162+
System.out.println("随机long类型数: " + randomLong);
163+
}
164+
}
165+
```
166+
167+
**输出示例:**
168+
169+
```java
170+
09之间的随机整数: 4
171+
随机小数 (0.0 - 1.0): 0.234567
172+
随机布尔值: true
173+
1020之间的随机整数: 15
174+
随机long类型数: -3456789021234567890
175+
```
176+
177+
178+
179+
## 5. 常见应用场景
180+
181+
1. **生成随机密码或字符串:** 结合字符数组与 `Random` 实现随机字符串。
182+
2. **模拟随机事件:** 例如掷骰子、抛硬币等。
183+
3. **随机抽取数据:** 例如从集合中随机取出元素。
184+
4. **生成随机数用于游戏开发:** 例如生成怪物攻击力、地图坐标等。
185+
186+
187+
188+
## 6. 随机字符串示例
189+
190+
以下是生成随机字符串(如密码)的示例:
191+
192+
```java
193+
import java.util.Random;
194+
195+
public class RandomString {
196+
public static void main(String[] args) {
197+
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
198+
int length = 8; // 指定随机字符串的长度
199+
Random random = new Random();
200+
StringBuilder result = new StringBuilder();
201+
202+
for (int i = 0; i < length; i++) {
203+
int index = random.nextInt(characters.length());
204+
result.append(characters.charAt(index));
205+
}
206+
207+
System.out.println("生成的随机字符串: " + result.toString());
208+
}
209+
}
210+
```
211+
212+
**输出示例:**
213+
214+
```
215+
生成的随机字符串: a9FhT2Lm
216+
```
217+
218+
219+
220+
## 7. 总结
221+
222+
1. 引入 `java.util.Random` 类。
223+
2. 使用 `Random` 对象生成各种类型的随机数。
224+
3. 根据需求生成指定范围或格式的随机数。
225+
4. 结合循环等方法,可以实现更复杂的随机场景。
226+
227+
## 8. 速查表格
228+
229+
| **方法** | **返回值类型** | **作用** | **代码示例** |
230+
| -------------------- | -------------- | ------------------------------------ | ------------------------------------------------------------ |
231+
| `nextInt()` | `int` | 生成一个任意范围的整数 | `int num = random.nextInt();` |
232+
| `nextInt(int bound)` | `int` | 生成 `[0, bound-1]` 范围内的随机整数 | `int num = random.nextInt(10); // 0-9` |
233+
| `nextDouble()` | `double` | 生成 `[0.0, 1.0)` 范围的随机小数 | `double num = random.nextDouble();` |
234+
| `nextFloat()` | `float` | 生成 `[0.0, 1.0)` 范围的随机小数 | `float num = random.nextFloat();` |
235+
| `nextBoolean()` | `boolean` | 随机生成 `true``false` | `boolean flag = random.nextBoolean();` |
236+
| `nextLong()` | `long` | 生成一个任意范围的 `long` 类型随机数 | `long num = random.nextLong();` |
237+
| **指定范围的随机数** | `int` | 生成 `[min, max]` 范围的随机整数 | `int num = min + random.nextInt(max - min + 1);` |
238+
| **随机字符串生成** | `String` | 生成一个固定长度的随机字符串 | `String chars = "abc"; chars.charAt(random.nextInt(chars.length()));` |
239+
240+
241+
242+
## 9. 生成指定范围的随机数讲解
243+
244+
245+
246+
247+
248+
249+
250+
251+
252+
253+
254+
255+
256+
257+
258+
259+
260+
261+
262+
263+
264+
265+
266+
267+
268+
269+
270+
271+
272+
欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!
273+
274+
::: details 公众号:AI悦创【二维码】
275+
276+
![](/gzh.jpg)
277+
278+
:::
279+
280+
::: info AI悦创·编程一对一
281+
282+
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
283+
284+
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
285+
286+
方法一:[QQ](http://wpa.qq.com/msgrd?v=3&uin=1432803776&site=qq&menu=yes)
287+
288+
方法二:微信:Jiabcdefh
289+
290+
:::
291+
292+
![](/zsxq.jpg)

src/Java/chapter02/32.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
title: 32-打造一个小超市
3+
date: 2024-12-18 09:54:39
4+
icon: java
5+
author: AI悦创
6+
isOriginal: true
7+
category:
8+
- Java体系课
9+
tag:
10+
- Java体系课
11+
sticky: false
12+
star: false
13+
article: true
14+
timeline: true
15+
image: false
16+
navbar: true
17+
sidebarIcon: true
18+
headerDepth: 5
19+
comment: true
20+
lastUpdated: true
21+
editLink: false
22+
backToTop: true
23+
toc: true
24+
footer: 长期招收编程一对一学员!微信:Jiabcdefh, <a href="https://beian.miit.gov.cn/" target="_blank">闽ICP备19021486号-6</a>
25+
---
26+
27+
28+
29+
30+
31+
32+
33+
34+
35+
36+
37+
38+
39+
40+
41+
42+
43+
44+
45+
46+
47+
48+
49+
50+
51+
52+
53+
欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!
54+
55+
::: details 公众号:AI悦创【二维码】
56+
57+
![](/gzh.jpg)
58+
59+
:::
60+
61+
::: info AI悦创·编程一对一
62+
63+
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
64+
65+
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
66+
67+
方法一:[QQ](http://wpa.qq.com/msgrd?v=3&uin=1432803776&site=qq&menu=yes)
68+
69+
方法二:微信:Jiabcdefh
70+
71+
:::
72+
73+
![](/zsxq.jpg)

0 commit comments

Comments
 (0)