scipy.stats.Uniform.

sample#

Uniform.sample(shape=(), *, method=None, rng=None)[來源]#

從分布中取出隨機樣本。

參數:
shape整數元組,預設值: ()

要繪製的樣本形狀。如果隨機變數底層分布的參數是形狀為 param_shape 的陣列,則輸出陣列的形狀將為 shape + param_shape

method{None, ‘formula’, ‘inverse_transform’}

用於產生樣本的策略。預設情況下 ( None ),基礎結構會從以下選項中選擇,並依優先順序排列。

  • 'formula':特定於分布的實作

  • 'inverse_transform':產生均勻分布的樣本,並在這些引數處傳回反向 CDF。

並非所有分布都提供所有 method 選項。如果選定的 method 不可用,則會引發 NotImplementedError`

rngnumpy.random.Generatorscipy.stats.QMCEngine,選用

虛擬或半虛擬亂數產生器狀態。當 rng 為 None 時,會使用來自作業系統的熵建立新的 numpy.random.Generatornumpy.random.Generatorscipy.stats.QMCEngine 以外的類型會傳遞至 numpy.random.default_rng 以實例化 Generator

如果 rngscipy.stats.QMCEngine 的實例,且設定為使用擾頻,且 shape 不為空,則結果的第零軸上的每個切片都是「半獨立」的低差異序列;也就是說,它們是可以視為在統計上獨立的不同序列,以用於大多數實際用途。對 sample 的個別呼叫會產生新的半獨立、低差異序列。

參考文獻

[1]

抽樣 (統計學),維基百科https://en.wikipedia.org/wiki/Sampling_(statistics)

範例

使用所需的參數實例化分布

>>> import numpy as np
>>> from scipy import stats
>>> X = stats.Uniform(a=0., b=1.)

產生虛擬隨機樣本

>>> x = X.sample((1000, 1))
>>> octiles = (np.arange(8) + 1) / 8
>>> np.count_nonzero(x <= octiles, axis=0)
array([ 148,  263,  387,  516,  636,  751,  865, 1000])  # may vary
>>> X = stats.Uniform(a=np.zeros((3, 1)), b=np.ones(2))
>>> X.a.shape,
(3, 2)
>>> x = X.sample(shape=(5, 4))
>>> x.shape
(5, 4, 3, 2)