maxframe.tensor.random.triangular#

maxframe.tensor.random.triangular(left, mode, right, size=None, chunk_size=None, gpu=None, dtype=None)[源代码]#

从区间 [left, right] 上的三角分布中抽取样本。

三角分布是一种连续概率分布,其下限为 left,峰值在 mode,上限为 right。与其他分布不同,这些参数直接定义了概率密度函数的形状。

参数:
  • left (float or array_like of floats) -- 下限。

  • mode (float or array_like of floats) -- 分布峰值出现的值。该值应满足条件 left <= mode <= right

  • right (float or array_like of floats) -- 上限,应大于 left

  • size (int or tuple of ints, optional) -- 输出形状。如果给定形状为,例如 (m, n, k),则抽取 m * n * k 个样本。如果 size 为 None``(默认),且 ``leftmoderight 都是标量,则返回单个值。否则抽取 mt.broadcast(left, mode, right).size 个样本。

  • chunk_size (int or tuple of int or tuple of ints, optional) -- 每个维度上期望的块大小

  • gpu (bool, optional) -- 如果为 True,则在 GPU 上分配张量,默认为 False

  • dtype (data-type, optional) -- 返回张量的数据类型。

返回:

out -- 从参数化的三角分布中抽取的样本。

返回类型:

Tensor or scalar

备注

三角分布的概率密度函数为

\[\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}\]

三角分布常用于底层分布未知但对极限和模式有一定了解的未明确定义的问题中。它通常用于模拟。

引用

示例

从分布中抽取值并绘制直方图:

>>> import matplotlib.pyplot as plt
>>> import maxframe.tensor as mt
>>> h = plt.hist(mt.random.triangular(-3, 0, 8, 100000).execute(), bins=200,
...              normed=True)
>>> plt.show()