Skip to main content
`Ctrl`+`K`

# numpy.random.triangular

random.triangular(left, mode, right, size=None)

  Draw samples from the triangular distribution over the interval `[left, right]`.

  The triangular distribution is a continuous probability distribution with lower limit left, peak at mode, and upper limit right. Unlike the other distributions, these parameters directly define the shape of the pdf.

  Note

  New code should use the `triangular` method of a `Generator` instance instead; please see the Quick start.

  Parameters:
    left float or array_like of floats

      Lower limit.

    mode float or array_like of floats

      The value where the peak of the distribution occurs. The value must fulfill the condition `left <= mode <= right`.

    right float or array_like of floats

      Upper limit, must be larger than left.

    size int or tuple of ints, optional

      Output shape. If the given shape is, e.g., `(m, n, k)`, then `m * n * k` samples are drawn. If size is `None` (default), a single value is returned if `left`, `mode`, and `right` are all scalars. Otherwise, `np.broadcast(left, mode, right).size` samples are drawn.

  Returns:
    out ndarray or scalar

      Drawn samples from the parameterized triangular distribution.

  See also

  `random.Generator.triangular`

    which should be used for new code.

  Notes

  The probability density function for the triangular distribution is

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

  The triangular distribution is often used in ill-defined problems where the underlying distribution is not known, but some knowledge of the limits and mode exists. Often it is used in simulations.

  References

  [1]

  Wikipedia, “Triangular distribution” https://en.wikipedia.org/wiki/Triangular_distribution

  Examples

  Draw values from the distribution and plot the histogram:

      >>> import matplotlib.pyplot as plt
      >>> h = plt.hist(np.random.triangular(-3, 0, 8, 100000), bins=200,
      ...              density=True)
      >>> plt.show()