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 (預設),則當 leftmoderight 都是純量時,會傳回單一值。否則,會抽取 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()
../../../_images/numpy-random-Generator-triangular-1.png