Python - 隨機模組



random 模組是一個標準庫模組,它提供用於各種操作的函式,例如隨機數生成、洗牌序列和進行隨機選擇。在本模組中,我們將檢查 Python random 模組的功能,並提供現實世界的示例來演示如何使用它。

在開發應用程式時,使用 python “random” 模組對於統計分析、遊戲、為敏感資料保護加密金鑰等任務至關重要。讓我們瀏覽一下不同型別資料的各種方法。

  • 對於整數,可以透過 randint() 和 randrange() 函式實現從範圍內的均勻選擇,其中該函式隨機選擇指定範圍內的整數,確保該範圍內的每個整數都有相同的被選擇的機率。

  • 對於列表、元組或任何其他可迭代的順序資料,我們可以透過 choice()、choices() 等函式實現相同的功能。random 模組幾乎所有內建函式都依賴於基本函式random.random(),該函式生成一個隨機浮點值。

  • 在統計分析領域,使用各種分佈(例如高斯分佈、均勻分佈、對數正態分佈)來提取資料的見解。random 模組提供從這些分佈生成樣本的函式。

我們知道 random 模組提供了各種生成隨機數的函式,但是,可能不清楚的是,這些函式是隱藏的 random.Random 類例項的繫結方法。這意味著,python 建立一個 Random 類的例項並將函式繫結到該例項。

Python random.Random 類

Random 類執行 random 模組使用的預設偽隨機數生成器。建構函式 random.Random([seed]) 負責建立 Random 類的例項,從而允許初始化隨機數生成器。

種子決定了生成隨機數的起點。`getstate()` 和 `setstate()` 等函式允許我們訪問和更新生成器的內部狀態,從而能夠儲存和恢復序列。

Python `random.SystemRandom` 類

`random` 模組不僅提供了 `Random` 類用於生成隨機數,還提供了 `SystemRandom` 類,該類旨在使用系統提供的源來生成隨機數。此類使用 `os.urandom()` 函式,該函式生成加密安全的位元組和隨機數。

讓我們看看 `random` 模組中的各種函式。

整數函式

以下是專門用於處理整數的函式:

序號 函式及描述
1

Python `random.randrange([start,] stop [,step])` 函式

此函式從指定的範圍內返回一個隨機選擇的元素。

2

Python `random.randint(a,b)` 函式

此函式接受兩個引數,並返回這兩個引數之間範圍內的整數(包含)。

3

Python `random.getrandbits(a)` 函式

此函式返回一個具有隨機位數的非負整數。

4

`random.random()`

一個隨機浮點數 r,使得 0 小於等於 r 且 r 小於 1。

序列函式

以下是專門用於處理序列的函式:

序號 函式及描述
1

Python `random.choice(seq)` 函式

此函式接受一個序列,並從該序列中返回一個隨機元素。

2

Python `random.choices()` 函式

此函式從給定序列中返回特定大小的列表,並允許重複選擇。

3

Python `random.shuffle(seq)` 函式

此函式會打亂一個可變序列,並返回一個新的已打亂的序列。

4

Python `random.sample()` 函式

此函式從給定序列中返回特定大小的列表,不允許重複選擇。

分佈函式

以下是專門用於處理分佈的函式:

序號 函式及描述
1

Python `random.binomialvariate(n,p)` 函式

此函式返回一個整數,表示在 n 次試驗中,機率為 p 時觀察到的成功次數。

2

Python `random.uniform(a, b)` 函式

此函式返回 a, b 之間的一個隨機浮點數(包含)。

3

Python `random.triangular(a,b,mode)` 函式

此函式返回 a, b 之間的一個浮點數(包含),並在邊界之間指定一個模式。

4

Python `random.betavariate()` 函式

此函式返回一個服從**Beta 分佈**的隨機變數。

5

Python `random.expovariate(lambd=)` 函式

如果引數 lambd 為正,則該函式返回的值範圍從 0 到正無窮大。如果 lambd 為負,則返回的值介於負無窮大和 0 之間。

6

Python `random.gammavariate(alpha,beta)` 函式

此函式返回一個服從**Gamma 分佈**的隨機變數,形狀引數為 alpha,尺度引數為 beta。

7

Python `random.gauss(mu,std)` 函式

此函式返回一個服從**高斯分佈**的隨機變數,均值為 "mu",標準差為 "std"。

8

Python `random.lognormvariate(mu,std)` 函式

此函式返回一個服從**對數正態分佈**的隨機變數,均值為 "mu",標準差為 "std"。

9

Python `random.normalvariate(mu,std)` 函式

此函式返回一個服從**正態分佈**的隨機變數,均值為 "mu",標準差為 "std"。

10

Python `random.vonmisesvariate(mu,kappa)` 函式

此函式返回一個服從**馮·米塞斯分佈**的隨機變數,均角為 mu,集中引數 kappa 度量分佈的離散程度。

11

Python `random.paretovariate(alpha)` 函式

此函式返回一個服從**帕累託分佈**的隨機變數,形狀引數為 alpha。

12

Python `random.weibullvariate(alpha, beta)` 函式

此函式返回一個服從**威布林分佈**的隨機變數,形狀引數為 alpha,尺度引數為 beta。

位元組函式

以下是專門用於處理位元組的函式:

序號 函式及描述
1

Python `random.randbytes(a)` 函式

此函式用於生成隨機位元組。

備選生成器函式

以下是專門用於備選生成器的函式:

序號 函式及描述
1

Python `random.seed([x])` 函式

此函式初始化隨機數生成器的內部狀態。

2

Python `random.getstate()` 函式

此函式返回生成器的內部狀態。

3

Python `random.setstate()` 函式

此函式設定隨機數生成器的內部狀態。

廣告