flopscope.

flopscope.numpy.random.RandomState.triangular

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

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

Adapted from NumPy docs np.random.RandomState.triangular

Arearandom
Typecounted
Cost
numel(output)\text{numel}(\text{output})
Flopscope Context

Legacy triangular distribution; cost = numel(output).

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 random-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, flops.broadcast(left, mode, right).size samples are drawn.

Returns

out:ndarray or scalar

Drawn samples from the parameterized triangular distribution.

See also

Notes

The probability density function for the triangular distribution is

P(x;l,m,r)={2(xl)(rl)(ml)for lxm,2(rx)(rl)(rm)for mxr,0otherwise.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}

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

footnote
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(flops.random.triangular(-3, 0, 8, 100000), bins=200,
... density=True)
>>> plt.show()