Python 標(biāo)準(zhǔn)庫之 random 模塊
隨機(jī)數(shù)是隨機(jī)產(chǎn)生的數(shù),比如購買彩票,中獎(jiǎng)的號(hào)碼就是隨機(jī)的。random 庫是用于生成隨機(jī)數(shù)的 Python 標(biāo)準(zhǔn)庫,random 庫提供如下函數(shù):
函數(shù) | 功能 |
---|---|
random() | 生成一個(gè) [0.0, 1.0) 之間的隨機(jī)小數(shù) |
seed(seed) | 初始化給定的隨機(jī)數(shù)種子 |
randint(a, b) | 生成一個(gè) [a, b] 之間的隨機(jī)整數(shù) |
uniform(a, b) | 生成一個(gè) [a, b] 之間的隨機(jī)小數(shù) |
choice(seq) | 從序列 seq 中隨機(jī)選擇一個(gè)元素 |
shuffle(seq) | 將序列 seq 中元素隨機(jī)排列, 返回打亂后的序列 |
1. random.random()
random.random() 的功能是生成一個(gè) [0.0, 1.0) 之間的隨機(jī)小數(shù),示例如下:
>>> import random
>>> random.random()
0.02834747652200631
>>> random.random()
0.8357651039198697
>>> random.random()
0.43276706790505337
- 調(diào)用 3 次 random.random(),產(chǎn)生 3 個(gè)不同的數(shù)
- 每次產(chǎn)生的數(shù)都是在 [0.0, 1.0) 之間
2. random.seed(seed)
計(jì)算機(jī)使用確定性的算法計(jì)算出一個(gè)隨機(jī)數(shù)序列。計(jì)算機(jī)產(chǎn)生的隨機(jī)數(shù)并不真正的隨機(jī),但具有類似于隨機(jī)數(shù)的統(tǒng)計(jì)特征,如均勻性、獨(dú)立性等。
計(jì)算機(jī)根據(jù)隨機(jī)數(shù)種子產(chǎn)生隨機(jī)數(shù)序列,如果隨機(jī)數(shù)種子相同,每次產(chǎn)生的隨機(jī)數(shù)序列是相同的;如果隨機(jī)數(shù)種子不同,產(chǎn)生的隨機(jī)數(shù)序列是不同的。
random.seed(seed) 的功能是初始化給定的隨機(jī)數(shù)種子,示例如下:
>>> import random
>>> random.seed(10)
>>> random.randint(0, 100)
73
>>> random.randint(0, 100)
4
>>> random.randint(0, 100)
54
>>> random.seed(10)
>>> random.randint(0, 100)
73
>>> random.randint(0, 100)
4
>>> random.randint(0, 100)
54
- 在第 2 行,設(shè)定種子為 10
- 在第 4 行,產(chǎn)生第 1 個(gè)隨機(jī)數(shù) 73
- 在第 6 行,產(chǎn)生第 2 個(gè)隨機(jī)數(shù) 4
- 在第 8 行,產(chǎn)生第 3 個(gè)隨機(jī)數(shù) 54
- 在第 9 行,設(shè)定種子為 10
- 在第 11 行,產(chǎn)生第 1 個(gè)隨機(jī)數(shù) 73
- 在第 13 行,產(chǎn)生第 2 個(gè)隨機(jī)數(shù) 4
- 在第 15 行,產(chǎn)生第 3 個(gè)隨機(jī)數(shù) 54
- 可以看出,當(dāng)種子相同時(shí),產(chǎn)生的隨機(jī)數(shù)序列是相同的
3. random.randint(a, b)
random.randint(a, b) 的功能是生成一個(gè) [a, b] 之間的隨機(jī)整數(shù),示例如下:
>>> import random
>>> random.randint(0, 2)
1
>>> random.randint(0, 2)
0
>>> random.randint(0, 2)
1
>>> random.randint(0, 2)
2
在例子中,randint(0, 2) 產(chǎn)生 [0, 2] 之間的隨機(jī)整數(shù)。
4. random.uniform(a, b)
random.uniform(a, b) 的功能是生成一個(gè) [a, b] 之間的隨機(jī)小數(shù),示例如下:
>>> import random
>>> random.uniform(0, 2)
0.20000054219225438
>>> random.uniform(0, 2)
1.4472780206791538
>>> random.uniform(0, 2)
0.5927807855738692
在例子中,uniform(0, 2) 產(chǎn)生 [0, 2] 之間的隨機(jī)小數(shù)。
5. random.choice(seq)
random.choice(seq) 的功能是從序列 seq 中隨機(jī)選擇一個(gè)元素,示例如下:
>>> import random
>>> seq = [1, 2, 3, 4]
>>> random.choice(seq)
3
>>> random.choice(seq)
1
- 在第 4 行,第一次隨機(jī)選擇元素 3
- 在第 6 行,第一次隨機(jī)選擇元素 1
6. random.shuffle(seq)
random.shuffle(seq) 的功能是將序列 seq 中元素隨機(jī)排列, 返回打亂后的序列,示例如下:
>>> import random
>>> seq = [1, 2, 3, 4]
>>> random.shuffle(seq)
>>> seq
[1, 3, 2, 4]
- 在第 2 行,建立一個(gè)有序列表
- 在第 3 行,使用 shuffle 將原來的有序列表重新隨機(jī)排序