# Exponential Distribution

The exponential distribution can be used to model the time until an event occurs, or the time between two events. Examples of quantities that can be modeled using the exponential distribution are:

The time between phone calls in a call center.

The time until a machine fails.

The exponential distribution is related to the Poisson distribution. Where the Poisson distribution models the number of occurrences of an event in a specified time span, the exponential distribution models the time between these occurrences. The probability of an event is assumed to be constant.

The exponential distribution has one parameter, usually denoted by the Greek letter (mu). When the time until failure is being modeled, specifies the mean time to failure. When the time between events is being modeled, then specifies the mean time between two occurrences. This parameter acts as a scale parameter of the distribution.

The exponential distribution is a special case of the Erlang distribution with shape parameter 1.

The probability density function (PDF) of the exponential distribution is:

$$f(x) = \frac{e^{-x/\mu}}{\mu}$$The exponential distribution is implemented by the ExponentialDistribution class. It has two constructors. The first constructor has one parameter: the scale parameter of the distribution. The following constructs an exponential distribution with waiting time (scale parameter) 7.6:

`var exponential = new ExponentialDistribution(7.6);`

If a variable is assumed to have an exponential distribution, then the parameter of the distribution can be estimated using the method of maximum likelihood, which gives the same results as the method of matching moments. The second constructor performs this calculation. It takes one argument: a Vector<T> whose distribution is to be estimated.

Note that parameter estimation says nothing about how well the estimated distribution fits the variable's distribution. Use one of the goodness-of-fit tests to verify the appropriateness of the choice of distribution.

The ExponentialDistribution class has one specific property, ScaleParameter, which returns the scale parameter of the distribution. This parameter commonly corresponds to the average waiting time until an event occurs.

ExponentialDistribution has one static (*Shared* in Visual Basic) method, Sample, which
generates a random sample using a user-supplied uniform random number generator.

```
var random = new MersenneTwister();
double sample = ExponentialDistribution.Sample(random, 7.6);
```

The above example uses the MersenneTwister to generate uniform random numbers.

For details of the properties and methods common to all continuous distribution classes, see the topic on continuous distributions..