在 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() 方法從給定範圍內返回一個隨機選擇的元素。此方法接受兩個引數start 和stop。因此,它會在範圍的起始值和結束值之間生成隨機數。
示例
在下面的示例中,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