numpy.random.Generator.triangular#
方法
- random.Generator.triangular(left, mode, right, size=None)#
從區間
[left, right]
的三角分佈中抽取樣本。三角分佈是一種連續機率分佈,具有下限 left、峰值 mode 和上限 right。與其他分佈不同,這些參數直接定義了 pdf 的形狀。
- 參數:
- leftfloat 或 float 的類陣列
下限。
- modefloat 或 float 的類陣列
分佈峰值出現的值。該值必須滿足條件
left <= mode <= right
。- rightfloat 或 float 的類陣列
上限,必須大於 left。
- sizeint 或 int 元組,選用
輸出形狀。如果給定的形狀是,例如,
(m, n, k)
,則會抽取m * n * k
個樣本。如果 size 為None
(預設),則當left
、mode
和right
都是純量時,會傳回單一值。否則,會抽取np.broadcast(left, mode, right).size
個樣本。
- 傳回:
- outndarray 或 純量
從參數化的三角分佈中抽取的樣本。
註解
三角分佈的機率密度函數為
\[\begin{split}P(x;l, m, r) = \begin{cases} \frac{2(x-l)}{(r-l)(m-l)}& \text{for $l \leq x \leq m$},\\ \frac{2(r-x)}{(r-l)(r-m)}& \text{for $m \leq x \leq r$},\\ 0& \text{otherwise}. \end{cases}\end{split}\]三角分佈常被用於定義不明確的問題中,在這些問題中,底層分佈未知,但存在關於極限和眾數的一些知識。它通常用於模擬中。
參考文獻
[1]Wikipedia, “Triangular distribution” https://en.wikipedia.org/wiki/Triangular_distribution
範例
從分佈中抽取數值並繪製直方圖
>>> import matplotlib.pyplot as plt >>> rng = np.random.default_rng() >>> h = plt.hist(rng.triangular(-3, 0, 8, 100000), bins=200, ... density=True) >>> plt.show()