1. 程式人生 > >python random- 生成偽隨機數

python random- 生成偽隨機數

9.6. random- 生成偽隨機數

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

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

在實線上,有計算均勻,正態(高斯),對數正態,負指數,伽馬和貝塔分佈的函式。為了生成角度分佈,可以使用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()在任意大範圍內產生選擇。

警告

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

也可以看看

M. Matsumoto和T. Nishimura,“Mersenne Twister:623維等分的均勻偽隨機數發生器”,ACM Transactions on Modeling and Computer Simulation Vol。1998年1月8日第1期。

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

9.6.1.簿記功能

random.seeda =無版本= 2 

初始化隨機數生成器。

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

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

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

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

版本3.2中已更改:已

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

random.getstate()

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

random.setstate狀態

random.getrandbits

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