# Python exponential distribution

The exponential distribution is a continuous probability distribution that models the time between events in a Poisson process, where events occur continuously and independently at a constant average rate.

In Python, you can work with the exponential distribution using the `scipy.stats` module. Here’s an example of how to generate random numbers from an exponential distribution and calculate some statistics:

``````import numpy as np
from scipy.stats import expon

# Generate random numbers from exponential distribution
scale = 2.0  # The scale parameter (mean = 1 / scale)
size = 1000  # Number of random numbers to generate
random_numbers = expon.rvs(scale=scale, size=size)

# Calculate statistics
mean = expon.mean(scale=scale)
variance = expon.var(scale=scale)
standard_deviation = expon.std(scale=scale)
median = expon.median(scale=scale)

print("Mean:", mean)
print("Variance:", variance)
print("Standard Deviation:", standard_deviation)
print("Median:", median)
``````

You can also use the exponential distribution to calculate probabilities and percentiles. For example, to calculate the cumulative distribution function (CDF) at a given value or the inverse CDF (quantile), you can use the `expon.cdf` and `expon.ppf` functions, respectively.

``````# Calculate CDF at a given value
x = 3.0
cdf = expon.cdf(x, scale=scale)
print("CDF at", x, ":", cdf)

# Calculate quantile at a given probability
p = 0.75
quantile = expon.ppf(p, scale=scale)
print("Quantile at", p, ":", quantile)
``````

These examples demonstrate the basic usage of the exponential distribution in Python using the `scipy.stats` module. You can explore more functions and capabilities of the module in the SciPy documentation: https://docs.scipy.org/doc/scipy/reference/stats.html

## Python exponential distribution example

Here’s an example that demonstrates how to work with the exponential distribution in Python:

```import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import expon

# Parameters for the exponential distribution
scale = 2.0

# Create an exponential distribution object
dist = expon(scale=scale)

# Generate random numbers from the exponential distribution
random_numbers = dist.rvs(size=1000)

# Calculate the probability density function (PDF)
x = np.linspace(0, 10, 100)
pdf = dist.pdf(x)

# Calculate the cumulative distribution function (CDF)
cdf = dist.cdf(x)

# Plot the PDF and CDF
plt.figure(figsize=(10, 4))

plt.subplot(1, 2, 1)
plt.plot(x, pdf, label='PDF')
plt.title('Exponential Distribution (PDF)')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.legend()

plt.subplot(1, 2, 2)
plt.plot(x, cdf, label='CDF')
plt.title('Exponential Distribution (CDF)')
plt.xlabel('x')
plt.ylabel('Cumulative Probability')
plt.legend()

plt.tight_layout()
plt.show()
```

Output:

To visualize the distribution, we calculate the probability density function (PDF) and cumulative distribution function (CDF) at different values of `x`. We use `np.linspace` to create an array of `x` values from 0 to 10.

You can run this code to see the plots representing the exponential distribution’s PDF and CDF based on the specified scale parameter. Feel free to adjust the scale or experiment with different parameters to explore the behavior of the exponential distribution.

``````# Calculate the mean of the distribution
mean = dist.mean()

# Calculate the variance of the distribution
variance = dist.var()

# Calculate the standard deviation of the distribution
std_dev = dist.std()

# Calculate the median of the distribution
median = dist.median()

# Calculate the moment of a specific order
moment = dist.moment(n)
``````

Note: IDE: PyCharm 2021.3.3 (Community Edition)

Windows 10

Python 3.10.1

All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.