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 -- 若 seed 為
None但未設定預設種子。
- normal(loc: float = 0.0, scale: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray¶
從常態(高斯)分布中抽取樣本。
- 參數:
loc -- 分布的平均值(中心)。
scale -- 分布的標準差(寬度)。必須為非負值。
size -- 輸出的形狀。若為整數,則回傳該長度的一維陣列。若為元組,則回傳該形狀的陣列。若為
None(預設值),則回傳單一 Pythonfloat。
- 回傳:
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,則回傳單一 Pythonfloat。out -- 可選的預先配置、密集的浮點
numpy.ndarray,用以接收樣本。若同時提供 size 與 out,兩者的形狀必須一致。
- 回傳:
依引數而定,回傳 Python
float、新的numpy.ndarray,或 out(已填入樣本)。- 引發:
TypeError -- 若 size 的型別不受支援、out 不是 ndarray,或 out 的 dtype 不是
float。ValueError -- 若所要求的形狀超過
ULAB_MAX_DIMS、size 與out.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)抽取的單一 Pythonfloat(純量情形下會忽略 low/high 邊界)。
- 回傳:
Python
float或所要求形狀的浮點numpy.ndarray。- 引發:
ValueError -- 若所要求的形狀超過
ULAB_MAX_DIMS。TypeError -- 若 size 既不是
None也不是元組。