python random 生成偽隨機數

2021-08-21 23:56:02 字數 2109 閱讀 3781

源**:lib / random.py

該模組為各種分布實現偽隨機數生成器。

對於整數,從範圍中有統一的選擇。對於序列,存在隨機元素的統一選擇,用於生成列表的隨機排列的函式,以及用於隨機抽樣而無需替換的函式。

在實在線,有計算均勻,正態(高斯),對數正態,負指數,伽馬和貝塔分布的函式。為了生成角度分布,可以使用von mises分布。

幾乎所有模組函式都依賴於基本函式random(),它在半開放範圍[0.0,1.0]內均勻生成隨機浮點數。python使用mersenne twister作為核心生成器。它產生53位精度浮點數,週期為2 ** 19937-1。c中的底層實現既快又執行緒安全。mersenne twister是現存最廣泛測試的隨機數發生器之一。但是,完全確定性,它不適用於所有目的,並且完全不適合加密目的。

此模組提供的函式實際上是random.random類的隱藏例項的繫結方法。您可以例項化自己的例項random以獲取不共享狀態的生成器。

random也可以,如果你想用你自己設計的不同的基本發電機子類:在這種情況下,覆蓋random()seed()getstate(),和setstate()方法。可選地,新生成器可以提供getrandbits()方法 - 這允許randrange()在任意大範圍內產生選擇。

random模組還提供了systemrandom使用系統函式os.urandom()從作業系統提供的源生成隨機數的類。

警告

此模組的偽隨機生成器不應用於安全目的。有關安全性或加密用途,請參閱該secrets模組。

也可以看看

m. matsumoto和t. nishimura,「mersenne twister:623維等分的均勻偽隨機數發生器」,acm transactions on modeling and computer simulation vol。2023年1月8日第1期。

具有長週期和相對簡單的更新操作的相容替代隨機數發生器的互補 - 乘法攜帶配方。

random.seed(a =無,版本= 2 )

初始化隨機數生成器。

如果乙個被省略或none,當前系統時間被使用。如果作業系統提供隨機源,則使用它們而不是系統時間(os.urandom()有關可用性的詳細資訊,請參閱函式)。

如果a是int,則直接使用。

對於版本2(預設值),astrbytesbytearray物件將轉換為aint並使用其所有位。

與版本1(提供用於從舊版本的python再現隨機序列)時,演算法strbytes產生更窄的範圍種子。

版本3.2中已更改:已移至版本2方案,該方案使用字串種子中的所有位。

random.getstate()

返回捕獲生成器當前內部狀態的物件。可以傳遞此物件setstate()以恢復狀態。

random.setstate(狀態)

狀態應該已經從以前的呼叫獲得getstate(),並且setstate()恢**生器的內部狀態,這是什麼的時候getstate()被呼叫。

random.getrandbits(k )

返回乙個帶有k個隨機位的python整數。此方法隨mersennetwister生成器一起提供,其他一些生成器也可以將其作為api的可選部分提供。可用時,getrandbits()可以randrange()處理任意大範圍。

python random隨機生成密碼

隨機生成密碼 新建乙個字元列表,這個列表中的內容從前到後依次包含小寫字母 大寫字母 數字。形如 a z a z 0 9 建議 使用 生成該字元列表。分別輸入隨機數的種子x 整型 隨機生成的密碼個數n,每個密碼長度m。每個密碼包含的m個字元是從上述字元列表中隨機抽取 注意 本題不要用sample函式,...

Python random 隨機數生成

python random 隨機數生成 python中的random模組用於生成隨機數。下面介紹一下random模組中最常用的幾個函式。random.random 用於生成乙個0到1的隨機符點數 0 n 1.0 random.uniform的函式原型為 random.uniform a,b 用於生成...

Python random 隨機數生成

python中的random模組用於生成隨機數。下面介紹一下random模組中最常用的幾個函式。random.random 用於生成乙個0到1的隨機符點數 0 n 1.0 random.uniform的函式原型為 random.uniform a,b 用於生成乙個指定範圍內的隨機符點數,兩個引數其中...