numpy.random --- 隨機數產生

numpy.random 子模組提供一個 Generator 類別,可從常見的機率分布中抽取樣本。其底層演算法為置換同餘產生器(permuted-congruential generator, PCG);詳情請參閱 https://www.pcg-random.org/

Generator 是一個帶狀態的物件:每次呼叫其抽樣方法都會推進內部狀態,因此連續呼叫會回傳彼此獨立的樣本。輸出陣列的 dtype 一律為 numpy.float

類別

class numpy.random.Generator(seed: int | tuple[int, ...] | None = None)

建構一個新的偽隨機數產生器。

參數:

seed -- 用於初始化產生器狀態的種子。若提供整數,則直接採用。若提供整數元組,則回傳一個獨立播種的 Generator 物件元組(每個元素對應一個),而非單一實例。若提供 None,則使用平台預設種子(前提是在建置階段已設定預設種子);否則會引發 ValueError

引發:
  • TypeError -- 若 seed 不是 None、整數,也不是整數元組。

  • ValueError -- 若 seedNone 但未設定預設種子。

normal(loc: float = 0.0, scale: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray

從常態(高斯)分布中抽取樣本。

參數:
  • loc -- 分布的平均值(中心)。

  • scale -- 分布的標準差(寬度)。必須為非負值。

  • size -- 輸出的形狀。若為整數,則回傳該長度的一維陣列。若為元組,則回傳該形狀的陣列。若為 None(預設值),則回傳單一 Python float

回傳:

Python float 或所要求形狀的浮點 numpy.ndarray

引發:
  • ValueError -- 若所要求的形狀超過 ULAB_MAX_DIMS

  • TypeError -- 若 size 既不是 None、整數,也不是元組。

樣本是使用 Box-Muller 轉換產生的。

random(size: int | tuple[int, ...] | None = None, *, out: ndarray | None = None) float | ndarray

從半開區間 [0.0, 1.0) 上的均勻分布中抽取樣本。

參數:
  • size -- 輸出的形狀。若為整數,則回傳該長度的一維陣列。若為元組,則回傳該形狀的陣列。若為 None(預設值)且 out 亦為 None,則回傳單一 Python float

  • out -- 可選的預先配置、密集的浮點 numpy.ndarray,用以接收樣本。若同時提供 sizeout,兩者的形狀必須一致。

回傳:

依引數而定,回傳 Python float、新的 numpy.ndarray,或 out(已填入樣本)。

引發:
  • TypeError -- 若 size 的型別不受支援、out 不是 ndarray,或 out 的 dtype 不是 float

  • ValueError -- 若所要求的形狀超過 ULAB_MAX_DIMSsizeout.shape 不一致,或 out 並非連續記憶體。

uniform(low: float = 0.0, high: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray

從半開區間 [low, high) 上的均勻分布中抽取樣本。

參數:
  • low -- 分布的下界(含)。

  • high -- 分布的上界(不含)。

  • size -- 輸出的形狀。若為元組,則回傳該形狀的陣列。若為 None(預設值),則回傳從 [0.0, 1.0) 抽取的單一 Python float(純量情形下會忽略 low/high 邊界)。

回傳:

Python float 或所要求形狀的浮點 numpy.ndarray

引發:
  • ValueError -- 若所要求的形狀超過 ULAB_MAX_DIMS

  • TypeError -- 若 size 既不是 None 也不是元組。

在預設引數完全相同的情況下,uniform() 會產生與 random() 相同的序列。