# Class ExponentialGenerator

java.lang.Object
org.uncommons.maths.random.ExponentialGenerator

All Implemented Interfaces:
  `NumberGenerator<Double>`

public class ExponentialGenerator extends Object implements NumberGenerator<Double>
Continuous random sequence that follows an exponential distribution.

Since:
  1.0.2

## Constructor Summary

Constructors
Constructor
Description
`ExponentialGenerator(double rate, Random rng)`
Creates a generator of exponentially-distributed values from a distribution with the specified rate.
`ExponentialGenerator(NumberGenerator<Double> rate, Random rng)`
Creates a generator of exponentially-distributed values from a distribution with a rate controlled by the specified generator parameter.

## Method Summary

Modifier and Type
Method
Description
`Double`
`nextValue()`
Generate the next exponential value from the current value of rate.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ExponentialGenerator

public ExponentialGenerator(NumberGenerator<Double> rate, Random rng)
Creates a generator of exponentially-distributed values from a distribution with a rate controlled by the specified generator parameter. The mean of this distribution is 1 / rate and the variance is 1 / rate^2.

Parameters:
  `rate` - A number generator that provides values to use as the rate for the exponential distribution. This generator must only return non-zero, positive values.
  `rng` - The source of randomness used to generate the exponential values.

### ExponentialGenerator

public ExponentialGenerator(double rate, Random rng)
Creates a generator of exponentially-distributed values from a distribution with the specified rate. The mean of this distribution is 1 / rate and the variance is 1 / rate^2.

Parameters:
  `rate` - The rate (lamda) of the exponential distribution.
  `rng` - The source of randomness used to generate the exponential values.

## Method Details

### nextValue

public Double nextValue()
Generate the next exponential value from the current value of rate.

Specified by:
  `nextValue` in interface `NumberGenerator<Double>`
Returns:
  The next exponentially-distributed value.