numpy.random.uniform#

random.uniform(low=0.0, high=1.0, size=None)#

從均勻分佈中抽取樣本。

樣本在半開區間 [low, high) 內均勻分佈(包含 low,但不包含 high)。換句話說,在給定區間內的任何值都有相同的機率被 uniform 抽取。

注意

新程式碼應改用 uniform 方法,此方法屬於 Generator 實例;請參閱快速入門

參數:
lowfloat 或 float 的類陣列 (array_like),選用

輸出區間的下界。所有產生值都會大於或等於 low。預設值為 0。

highfloat 或 float 的類陣列 (array_like)

輸出區間的上界。所有產生值都會小於或等於 high。由於公式 low + (high-low) * random_sample() 中的浮點數捨入,high 上限可能會包含在傳回的 float 陣列中。預設值為 1.0。

sizeint 或 int 元組,選用

輸出形狀。如果給定的形狀為例如 (m, n, k),則會抽取 m * n * k 個樣本。如果 size 為 None(預設值),且 lowhigh 都是純量,則會傳回單一值。否則,會抽取 np.broadcast(low, high).size 個樣本。

傳回值:
outndarray 或 純量

從參數化的均勻分佈中抽取的樣本。

另請參閱

randint

離散均勻分佈,產生整數。

random_integers

在閉區間 [low, high] 上的離散均勻分佈。

random_sample

[0, 1) 上均勻分佈的浮點數。

random

random_sample 的別名。

rand

便利函數,接受維度作為輸入,例如,rand(2,2) 將生成一個 2x2 的浮點數陣列,在 [0, 1) 上均勻分佈。

random.Generator.uniform

新程式碼應使用此方法。

註解

均勻分佈的機率密度函數為

\[p(x) = \frac{1}{b - a}\]

在區間 [a, b) 內的任何位置,其他地方為零。

high == low 時,將傳回 low 的值。如果 high < low,則結果在官方上是未定義的,並可能最終引發錯誤,即,當傳遞滿足該不等式條件的參數時,請勿依賴此函數的行為。由於公式 low + (high-low) * random_sample() 中的浮點數捨入,high 上限可能會包含在傳回的 float 陣列中。例如

>>> x = np.float32(5*0.99999999)
>>> x
np.float32(5.0)

範例

從分佈中抽取樣本

>>> s = np.random.uniform(-1,0,1000)

所有值都在給定區間內

>>> np.all(s >= -1)
True
>>> np.all(s < 0)
True

顯示樣本的直方圖,以及機率密度函數

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 15, density=True)
>>> plt.plot(bins, np.ones_like(bins), linewidth=2, color='r')
>>> plt.show()
../../../_images/numpy-random-uniform-1.png