numpy.random.RandomState.exponential — NumPy v2.6.dev0 Manual

method

random.RandomState.exponential(scale=1.0, size=None)

#

Draw samples from an exponential distribution.

Its probability density function is

\[f(x; \frac{1}{\beta}) = \frac{1}{\beta} \exp(-\frac{x}{\beta}),\]

for x>0 and 0 elsewhere. \(\beta\) is the scale parameter, which is the inverse of the rate parameter \(\lambda = 1/\beta\). The rate parameter is an alternative, widely used parameterization of the exponential distribution

[3]

.

The exponential distribution is a continuous analogue of the geometric distribution. It describes many common situations, such as the size of raindrops measured over many rainstorms

[1]

, or the time between page requests to Wikipedia

[2]

.

Parameters:scalefloat or array_like of floatsThe scale parameter, \(\beta = 1/\lambda\). Must be non-negative.

sizeint or tuple of ints, optionalOutput 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 scale is a scalar. Otherwise, np.array(scale).size samples are drawn.

Returns:outndarray or scalarDrawn samples from the parameterized exponential distribution.

References

[

1

]

Peyton Z. Peebles Jr., “Probability, Random Variables and Random Signal Principles”, 4th ed, 2001, p. 57.

Examples

A real world example: Assume a company has 10000 customer support agents and the average time between customer calls is 4 minutes.

>>> n=10000>>> time_between_calls=np.random.default_rng().exponential(scale=4,size=n)What is the probability that a customer will call in the next 4 to 5 minutes?

>>> x=((time_between_calls<5).sum())/n>>> y=((time_between_calls<4).sum())/n>>> x-y0.08 # may vary