1. 程式人生 > Python進階應用教學 >17 Python 標準庫之 random 模組

17 Python 標準庫之 random 模組

隨機數是隨機產生的數,比如購買彩票,中獎的號碼就是隨機的。random 庫是用於生成隨機數的 Python 標準庫,random 庫提供如下函式:

函式 功能
random() 生成一個 [0.0, 1.0) 之間的隨機小數
seed(seed) 初始化給定的隨機數種子
randint(a, b) 生成一個 [a, b] 之間的隨機整數
uniform(a, b) 生成一個 [a, b] 之間的隨機小數
choice(seq) 從序列 seq 中隨機選擇一個元素
shuffle(seq) 將序列 seq 中元素隨機排列, 返回打亂後的序列

1. random.random()

random.random() 的功能是生成一個 [0.0, 1.0) 之間的隨機小數,示例如下:

>>> import random
>>> random.random()
0.02834747652200631
>>> random.random()
0.8357651039198697
>>> random.random()
0.43276706790505337
  • 呼叫 3 次 random.random(),產生 3 個不同的數
  • 每次產生的數都是在 [0.0, 1.0) 之間

2. random.seed(seed)

計算機使用確定性的演算法計算出一個隨機數序列。計算機產生的隨機數並不真正的隨機,但具有類似於隨機數的統計特徵,如均勻性、獨立性等。

計算機根據隨機數種子產生隨機數序列,如果隨機數種子相同,每次產生的隨機數序列是相同的;如果隨機數種子不同,產生的隨機數序列是不同的。

random.seed(seed) 的功能是初始化給定的隨機數種子,示例如下:

>>> 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 行,設定種子為 10
    • 在第 4 行,產生第 1 個隨機數 73
    • 在第 6 行,產生第 2 個隨機數 4
    • 在第 8 行,產生第 3 個隨機數 54
  • 在第 9 行,設定種子為 10
    • 在第 11 行,產生第 1 個隨機數 73
    • 在第 13 行,產生第 2 個隨機數 4
    • 在第 15 行,產生第 3 個隨機數 54
  • 可以看出,當種子相同時,產生的隨機數序列是相同的

3. random.randint(a, b)

random.randint(a, b) 的功能是生成一個 [a, b] 之間的隨機整數,示例如下:

>>> 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) 產生 [0, 2] 之間的隨機整數。

4. random.uniform(a, b)

random.uniform(a, b) 的功能是生成一個 [a, b] 之間的隨機小數,示例如下:

>>> import random
>>> random.uniform(0, 2)
0.20000054219225438
>>> random.uniform(0, 2)
1.4472780206791538
>>> random.uniform(0, 2)
0.5927807855738692

在例子中,uniform(0, 2) 產生 [0, 2] 之間的隨機小數。

5. random.choice(seq)

random.choice(seq) 的功能是從序列 seq 中隨機選擇一個元素,示例如下:

>>> import random
>>> seq = [1, 2, 3, 4]
>>> random.choice(seq)
3
>>> random.choice(seq)
1
  • 在第 4 行,第一次隨機選擇元素 3
  • 在第 6 行,第一次隨機選擇元素 1

6. random.shuffle(seq)

random.shuffle(seq) 的功能是將序列 seq 中元素隨機排列, 返回打亂後的序列,示例如下:

>>> import random
>>> seq = [1, 2, 3, 4]
>>> random.shuffle(seq)
>>> seq
[1, 3, 2, 4]
  • 在第 2 行,建立一個有序列表
  • 在第 3 行,使用 shuffle 將原來的有序列表重新隨機排序