flopscope.numpy.random.exponential
fnp.random.exponential(scale=1.0, size=None)[flopscope source]
Draw samples from an exponential distribution.
Adapted from NumPy docs np.random.exponential
Sampling; cost = numel(output).
Its probability density function is
for x > 0 and 0 elsewhere. is the scale parameter,
which is the inverse of the rate parameter .
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]_.
New code should use the exponential method of a Generator instance instead; please see the random-quick-start.
Parameters
- scale:float or array_like of floats
The scale parameter, . Must be non-negative.
- size:int or tuple of ints, optional
Output shape. If the given shape is, e.g.,
(m, n, k), thenm * n * ksamples are drawn. If size isNone(default), a single value is returned ifscaleis a scalar. Otherwise,flops.array(scale).sizesamples are drawn.
Returns
- out:ndarray or scalar
Drawn samples from the parameterized exponential distribution.
See also
- we.flops.random.Generator.exponential which should be used for new code.
References
1
Peyton Z. Peebles Jr., "Probability, Random Variables and
Random Signal Principles", 4th ed, 2001, p. 57.2
Wikipedia, "Poisson process",
https://en.wikipedia.org/wiki/Poisson_process3
Wikipedia, "Exponential distribution",
https://en.wikipedia.org/wiki/Exponential_distributionExamples
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 = flops.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-y
0.08 # may vary