傳統隨機生成#

RandomState 提供對傳統生成器的存取權限。此生成器被視為已凍結,且不會再進行任何改進。保證它產生的值與 NumPy v1.16 的最終發行點版本相同。這些都依賴 Box-Muller 常態分佈或反 CDF 指數或 Gamma 分佈。只有在必須擁有與先前 NumPy 版本產生的隨機數完全相同的隨機數時,才應使用此類別。

RandomState 將額外資訊新增至狀態,使用 Box-Muller 常態分佈時需要這些資訊,因為這些常態分佈是以成對方式產生。使用 RandomState.get_state(而非底層位元生成器的 state)存取狀態非常重要,以便儲存這些額外值。

雖然我們提供了 MT19937 BitGenerator,以便獨立於 RandomState 使用,但請注意,它的預設種子設定使用 SeedSequence,而不是傳統種子設定演算法。RandomState 將使用傳統種子設定演算法。使用傳統種子設定演算法的方法目前是私有的,因為使用它們的主要原因只是為了實作 RandomState。但是,可以使用 RandomState 的狀態重設 MT19937 的狀態

from numpy.random import MT19937
from numpy.random import RandomState

rs = RandomState(12345)
mt19937 = MT19937()
mt19937.state = rs.get_state()
rs2 = RandomState(mt19937)

# Same output
rs.standard_normal()
rs2.standard_normal()

rs.random()
rs2.random()

rs.standard_exponential()
rs2.standard_exponential()
class numpy.random.RandomState(seed=None)#

慢速 Mersenne Twister 偽隨機數生成器的容器。考慮使用不同的 BitGenerator 和 Generator 容器來代替。

RandomStateGenerator 公開了許多方法,用於產生從各種機率分佈中抽取的隨機數。除了特定於分佈的引數之外,每個方法還接受預設為 None 的關鍵字引數 size。如果 sizeNone,則會產生並傳回單一值。如果 size 是整數,則會傳回以產生值填滿的 1 維陣列。如果 size 是元組,則會填滿並傳回具有該形狀的陣列。

相容性保證

使用固定種子和固定系列呼叫的固定位元生成器,以相同參數呼叫「RandomState」方法,將始終產生相同的結果,直到捨入誤差為止,除非這些值不正確。RandomState 實際上已凍結,並且只會接收 Numpy 內部變更所需的更新。更重大的變更(包括演算法改進)保留給 Generator

參數:
seed{None, int, array_like, BitGenerator}, 選項性

用於初始化偽隨機數生成器或已實例化的 BitGenerator 的隨機種子。如果為整數或陣列,則用作 MT19937 BitGenerator 的種子。值可以是介於 0 和 2**32 - 1(含)之間的任何整數、此類整數的陣列(或其他序列),或 None(預設值)。如果 seedNone,則 MT19937 BitGenerator 會透過從 /dev/urandom(或 Windows 對應物)讀取資料(如果可用)或從時鐘取得種子來初始化。

註解

Python stdlib 模組「random」也包含一個 Mersenne Twister 偽隨機數生成器,其中有許多方法與 RandomState 中可用的方法類似。RandomState 除了感知 NumPy 之外,還具有優勢,它提供了更多的機率分佈可供選擇。

種子設定和狀態#

get_state([legacy])

傳回代表生成器內部狀態的元組。

set_state(state)

從元組設定生成器的內部狀態。

seed([seed])

重新設定傳統 MT19937 BitGenerator 的種子

簡單隨機資料#

rand(d0, d1, ..., dn)

給定形狀的隨機值。

randn(d0, d1, ..., dn)

從「標準常態」分佈傳回一個樣本(或多個樣本)。

randint(low[, high, size, dtype])

從 low(包含)到 high(不包含)傳回隨機整數。

random_integers(low[, high, size])

介於 low 和 high 之間(包含)的 numpy.int_ 類型的隨機整數。

random_sample([size])

在半開區間 [0.0, 1.0) 中傳回隨機浮點數。

choice(a[, size, replace, p])

從給定的 1 維陣列產生隨機樣本

bytes(length)

傳回隨機位元組。

排列#

shuffle(x)

就地修改序列,透過洗牌其內容。

permutation(x)

隨機排列序列,或傳回排列後的範圍。

分佈#

beta(a, b[, size])

從 Beta 分佈中抽取樣本。

binomial(n, p[, size])

從二項式分佈中抽取樣本。

chisquare(df[, size])

從卡方分佈中抽取樣本。

dirichlet(alpha[, size])

從狄利克雷分佈中抽取樣本。

exponential([scale, size])

從指數分佈中抽取樣本。

f(dfnum, dfden[, size])

從 F 分佈中抽取樣本。

gamma(shape[, scale, size])

從 Gamma 分佈中抽取樣本。

geometric(p[, size])

從幾何分佈中抽取樣本。

gumbel([loc, scale, size])

從耿貝爾分佈中抽取樣本。

hypergeometric(ngood, nbad, nsample[, size])

從超幾何分佈中抽取樣本。

laplace([loc, scale, size])

從具有指定位置(或平均值)和尺度(衰減)的 Laplace 或雙指數分佈中抽取樣本。

logistic([loc, scale, size])

從邏輯分佈中抽取樣本。

lognormal([mean, sigma, size])

從對數常態分佈中抽取樣本。

logseries(p[, size])

從對數級數分佈中抽取樣本。

multinomial(n, pvals[, size])

從多項式分佈中抽取樣本。

multivariate_normal(mean, cov[, size, ...])

從多變量常態分佈中抽取隨機樣本。

negative_binomial(n, p[, size])

從負二項式分佈中抽取樣本。

noncentral_chisquare(df, nonc[, size])

從非中心卡方分佈中抽取樣本。

noncentral_f(dfnum, dfden, nonc[, size])

從非中心 F 分佈中抽取樣本。

normal([loc, scale, size])

從常態(高斯)分佈中抽取隨機樣本。

pareto(a[, size])

從具有指定形狀的 Pareto II 或 Lomax 分佈中抽取樣本。

poisson([lam, size])

從 Poisson 分佈中抽取樣本。

power(a[, size])

從具有正指數 a - 1 的冪分佈中,在 [0, 1] 中抽取樣本。

rayleigh([scale, size])

從 Rayleigh 分佈中抽取樣本。

standard_cauchy([size])

從模式 = 0 的標準柯西分佈中抽取樣本。

standard_exponential([size])

從標準指數分佈中抽取樣本。

standard_gamma(shape[, size])

從標準 Gamma 分佈中抽取樣本。

standard_normal([size])

從標準常態分佈(平均值=0,標準差=1)中抽取樣本。

standard_t(df[, size])

從自由度為 df 的標準學生 t 分佈中抽取樣本。

triangular(left, mode, right[, size])

從區間 [left, right] 上的三角分佈中抽取樣本。

uniform([low, high, size])

從均勻分佈中抽取樣本。

vonmises(mu, kappa[, size])

從 von Mises 分佈中抽取樣本。

wald(mean, scale[, size])

從 Wald 或反高斯分佈中抽取樣本。

weibull(a[, size])

從 Weibull 分佈中抽取樣本。

zipf(a[, size])

從 Zipf 分佈中抽取樣本。

numpy.random 中的函數#

上述許多 RandomState 方法都作為 numpy.random 中的函數匯出。不建議使用此用法,因為它是透過全域 RandomState 實例實作的,這在兩個方面都不建議:

  • 它使用全域狀態,這表示結果會隨著程式碼變更而改變

  • 它使用 RandomState 而不是更現代的 Generator

由於向後相容的傳統原因,我們不會變更此設定。

beta(a, b[, size])

從 Beta 分佈中抽取樣本。

binomial(n, p[, size])

從二項式分佈中抽取樣本。

bytes(length)

傳回隨機位元組。

chisquare(df[, size])

從卡方分佈中抽取樣本。

choice(a[, size, replace, p])

從給定的 1 維陣列產生隨機樣本

dirichlet(alpha[, size])

從狄利克雷分佈中抽取樣本。

exponential([scale, size])

從指數分佈中抽取樣本。

f(dfnum, dfden[, size])

從 F 分佈中抽取樣本。

gamma(shape[, scale, size])

從 Gamma 分佈中抽取樣本。

geometric(p[, size])

從幾何分佈中抽取樣本。

get_state([legacy])

傳回代表生成器內部狀態的元組。

gumbel([loc, scale, size])

從耿貝爾分佈中抽取樣本。

hypergeometric(ngood, nbad, nsample[, size])

從超幾何分佈中抽取樣本。

laplace([loc, scale, size])

從具有指定位置(或平均值)和尺度(衰減)的 Laplace 或雙指數分佈中抽取樣本。

logistic([loc, scale, size])

從邏輯分佈中抽取樣本。

lognormal([mean, sigma, size])

從對數常態分佈中抽取樣本。

logseries(p[, size])

從對數級數分佈中抽取樣本。

multinomial(n, pvals[, size])

從多項式分佈中抽取樣本。

multivariate_normal(mean, cov[, size, ...])

從多變量常態分佈中抽取隨機樣本。

negative_binomial(n, p[, size])

從負二項式分佈中抽取樣本。

noncentral_chisquare(df, nonc[, size])

從非中心卡方分佈中抽取樣本。

noncentral_f(dfnum, dfden, nonc[, size])

從非中心 F 分佈中抽取樣本。

normal([loc, scale, size])

從常態(高斯)分佈中抽取隨機樣本。

pareto(a[, size])

從具有指定形狀的 Pareto II 或 Lomax 分佈中抽取樣本。

permutation(x)

隨機排列序列,或傳回排列後的範圍。

poisson([lam, size])

從 Poisson 分佈中抽取樣本。

power(a[, size])

從具有正指數 a - 1 的冪分佈中,在 [0, 1] 中抽取樣本。

rand(d0, d1, ..., dn)

給定形狀的隨機值。

randint(low[, high, size, dtype])

從 low(包含)到 high(不包含)傳回隨機整數。

randn(d0, d1, ..., dn)

從「標準常態」分佈傳回一個樣本(或多個樣本)。

random([size])

在半開區間 [0.0, 1.0) 中傳回隨機浮點數。

random_integers(low[, high, size])

介於 low 和 high 之間(包含)的 numpy.int_ 類型的隨機整數。

random_sample([size])

在半開區間 [0.0, 1.0) 中傳回隨機浮點數。

ranf(*args, **kwargs)

This is an alias of random_sample.

rayleigh([scale, size])

從 Rayleigh 分佈中抽取樣本。

sample(*args, **kwargs)

This is an alias of random_sample.

seed([seed])

重新設定單例 RandomState 實例的種子。

set_state(state)

從元組設定生成器的內部狀態。

shuffle(x)

就地修改序列,透過洗牌其內容。

standard_cauchy([size])

從模式 = 0 的標準柯西分佈中抽取樣本。

standard_exponential([size])

從標準指數分佈中抽取樣本。

standard_gamma(shape[, size])

從標準 Gamma 分佈中抽取樣本。

standard_normal([size])

從標準常態分佈(平均值=0,標準差=1)中抽取樣本。

standard_t(df[, size])

從自由度為 df 的標準學生 t 分佈中抽取樣本。

triangular(left, mode, right[, size])

從區間 [left, right] 上的三角分佈中抽取樣本。

uniform([low, high, size])

從均勻分佈中抽取樣本。

vonmises(mu, kappa[, size])

從 von Mises 分佈中抽取樣本。

wald(mean, scale[, size])

從 Wald 或反高斯分佈中抽取樣本。

weibull(a[, size])

從 Weibull 分佈中抽取樣本。

zipf(a[, size])

從 Zipf 分佈中抽取樣本。