在 Python 中生成偽隨機數


許多計算機應用程式需要生成隨機數。但是,它們都不能生成真正的隨機數。Python,與任何其他程式語言一樣,使用偽隨機數生成器。Python 的隨機數生成基於 Mersenne Twister 演算法,該演算法生成 53 位精度的浮點數。該技術速度快且執行緒安全,但不適用於加密目的。Python 的標準庫包含 random 模組,該模組定義了用於處理隨機化的各種函式。

以下函式處理隨機整數生成。

  • random.seed() − 此函式初始化隨機數生成器。當匯入 random 模組時,生成器會在系統時間幫助下初始化。要重新播種生成器,請使用任何 int、str、byte 或 byte 陣列物件。

  • random.getstate() − 此函式與 setstate() 函式一起幫助一遍又一遍地重現相同的資料。getstate() 函式返回隨機數生成器的內部狀態。

  • random.randrange() − 此函式在給定範圍內生成一個隨機整數。它可以接受三個引數。

使用 'random.seed()'

使用 random.seed() 方法生成隨機數。這是藉助偽隨機數生成器透過對給定值執行某些操作來完成的。random 模組使用**種子值**作為基礎在 Python 中建立隨機數。

示例

我們可以提供 int、str、bytes 或 byte 陣列來重新播種生成器,以確保可重現的結果。

import random

# Seed with a specific value
random.seed(10)
# Will always produce the same output if seeded with 10(base)
print(random.random())  

random.seed(12)
print(random.random()) 

以下是上述程式碼的輸出 -

0.5714025946899135
0.4745706786885481

使用 'random.getstate()'

使用 random.getstate 方法檢索捕獲隨機數生成器當前內部狀態的物件。稍後可以將此物件傳遞給**setstate()**方法以將生成器恢復到此狀態。

示例

在下面的示例中,getstate() 返回生成器的當前內部狀態,可以將其儲存以稍後重現相同的隨機數序列。而**setstate(state)** 函式恢復儲存的狀態。

import random
state = random.getstate()

# Generate some random numbers
print(random.randint(1, 100))
print(random.randint(1, 100))

# Restore the saved state
random.setstate(state)

# Generates the same random numbers again
print(random.randint(1, 100))
print(random.randint(1, 100))

輸出

每次執行上述程式時,它都會生成隨機數。

70
60
70
60

使用 'random.randrange()'

random.randrange() 方法從給定範圍內返回一個隨機選擇的元素。此方法接受兩個引數startstop。因此,它會在範圍的起始值和結束值之間生成隨機數。

示例

在下面的示例中,random.randrange(start, stop=None) 生成指定範圍內的隨機整數。start 是包含的,而stop 是不包含的。

import random
# Random integer from 0 to 9
print(random.randrange(10)) 

# Random integer from 10 to 19
print(random.randrange(10, 20))  

輸出

每次執行上述程式時,它都會根據給定的起始值和結束值(範圍)生成隨機數。

3
15

更新於: 2024-10-09

3K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告