Colt 1.2.0

## cern.jet.random Class Distributions

```java.lang.Object cern.jet.random.Distributions
```

public class Distributions
extends Object

Contains methods for conveniently generating pseudo-random numbers from special distributions such as the Burr, Cauchy, Erlang, Geometric, Lambda, Laplace, Logistic, Weibull, etc.

All distributions are obtained by using a uniform pseudo-random number generator. followed by a transformation to the desired distribution.

Example usage:

``` cern.jet.random.engine.RandomEngine generator;
generator = new cern.jet.random.engine.MersenneTwister(new java.util.Date());
//generator = new edu.cornell.lassp.houle.RngPack.Ranecu(new java.util.Date());
//generator = new edu.cornell.lassp.houle.RngPack.Ranmar(new java.util.Date());
//generator = new edu.cornell.lassp.houle.RngPack.Ranlux(new java.util.Date());
//generator = AbstractDistribution.makeDefaultGenerator();
for (int i=1000000; --i >=0; ) {
int cauchy = Distributions.nextCauchy(generator);
...
}
```

Version:
1.0, 09/24/99
`MersenneTwister`, `Random`, `Math`

 Method Summary `static double` ```geometricPdf(int k, double p)```           Returns the probability distribution function of the discrete geometric distribution. `static double` ```nextBurr1(double r, int nr, RandomEngine randomGenerator)```           Returns a random number from the Burr II, VII, VIII, X Distributions. `static double` ```nextBurr2(double r, double k, int nr, RandomEngine randomGenerator)```           Returns a random number from the Burr III, IV, V, VI, IX, XII distributions. `static double` `nextCauchy(RandomEngine randomGenerator)`           Returns a cauchy distributed random number from the standard Cauchy distribution C(0,1). `static double` ```nextErlang(double variance, double mean, RandomEngine randomGenerator)```           Returns an erlang distributed random number with the given variance and mean. `static int` ```nextGeometric(double p, RandomEngine randomGenerator)```           Returns a discrete geometric distributed random number; Definition. `static double` ```nextLambda(double l3, double l4, RandomEngine randomGenerator)```           Returns a lambda distributed random number with parameters l3 and l4. `static double` `nextLaplace(RandomEngine randomGenerator)`           Returns a Laplace (Double Exponential) distributed random number from the standard Laplace distribution L(0,1). `static double` `nextLogistic(RandomEngine randomGenerator)`           Returns a random number from the standard Logistic distribution Log(0,1). `static double` ```nextPowLaw(double alpha, double cut, RandomEngine randomGenerator)```           Returns a power-law distributed random number with the given exponent and lower cutoff. `static double` `nextTriangular(RandomEngine randomGenerator)`           Returns a random number from the standard Triangular distribution in (-1,1). `static double` ```nextWeibull(double alpha, double beta, RandomEngine randomGenerator)```           Returns a weibull distributed random number. `static int` ```nextZipfInt(double z, RandomEngine randomGenerator)```           Returns a zipfian distributed random number with the given skew.

 Methods inherited from class java.lang.Object `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

 Method Detail

### geometricPdf

```public static double geometricPdf(int k,
double p)```
Returns the probability distribution function of the discrete geometric distribution.

p(k) = p * (1-p)^k for k >= 0.

Parameters:
`k` - the argument to the probability distribution function.
`p` - the parameter of the probability distribution function.

### nextBurr1

```public static double nextBurr1(double r,
int nr,
RandomEngine randomGenerator)```
Returns a random number from the Burr II, VII, VIII, X Distributions.

Implementation: Inversion method. This is a port of burr1.c from the C-RAND / WIN-RAND library. C-RAND's implementation, in turn, is based upon

L. Devroye (1986): Non-Uniform Random Variate Generation, Springer Verlag, New York.

Parameters:
`r` - must be > 0.
`nr` - the number of the burr distribution (e.g. 2,7,8,10).

### nextBurr2

```public static double nextBurr2(double r,
double k,
int nr,
RandomEngine randomGenerator)```
Returns a random number from the Burr III, IV, V, VI, IX, XII distributions.

Implementation: Inversion method. This is a port of burr2.c from the C-RAND / WIN-RAND library. C-RAND's implementation, in turn, is based upon

L. Devroye (1986): Non-Uniform Random Variate Generation, Springer Verlag, New York.

Parameters:
`r` - must be > 0.
`k` - must be > 0.
`nr` - the number of the burr distribution (e.g. 3,4,5,6,9,12).

### nextCauchy

`public static double nextCauchy(RandomEngine randomGenerator)`
Returns a cauchy distributed random number from the standard Cauchy distribution C(0,1). math definition and animated definition.

p(x) = 1/ (mean*pi * (1+(x/mean)^2)).

Implementation: This is a port of cin.c from the C-RAND / WIN-RAND library.

### nextErlang

```public static double nextErlang(double variance,
double mean,
RandomEngine randomGenerator)```
Returns an erlang distributed random number with the given variance and mean.

### nextGeometric

```public static int nextGeometric(double p,
RandomEngine randomGenerator)```
Returns a discrete geometric distributed random number; Definition.

p(k) = p * (1-p)^k for k >= 0.

Implementation: Inversion method. This is a port of geo.c from the C-RAND / WIN-RAND library.

Parameters:
`p` - must satisfy 0 < p < 1.

### nextLambda

```public static double nextLambda(double l3,
double l4,
RandomEngine randomGenerator)```
Returns a lambda distributed random number with parameters l3 and l4.

Implementation: Inversion method. This is a port of lamin.c from the C-RAND / WIN-RAND library. C-RAND's implementation, in turn, is based upon

J.S. Ramberg, B:W. Schmeiser (1974): An approximate method for generating asymmetric variables, Communications ACM 17, 78-82.

### nextLaplace

`public static double nextLaplace(RandomEngine randomGenerator)`
Returns a Laplace (Double Exponential) distributed random number from the standard Laplace distribution L(0,1).

Implementation: Inversion method. This is a port of lapin.c from the C-RAND / WIN-RAND library.

### nextLogistic

`public static double nextLogistic(RandomEngine randomGenerator)`
Returns a random number from the standard Logistic distribution Log(0,1).

Implementation: Inversion method. This is a port of login.c from the C-RAND / WIN-RAND library.

### nextPowLaw

```public static double nextPowLaw(double alpha,
double cut,
RandomEngine randomGenerator)```
Returns a power-law distributed random number with the given exponent and lower cutoff.

Parameters:
`alpha` - the exponent
`cut` - the lower cutoff

### nextTriangular

`public static double nextTriangular(RandomEngine randomGenerator)`
Returns a random number from the standard Triangular distribution in (-1,1).

Implementation: Inversion method. This is a port of tra.c from the C-RAND / WIN-RAND library.

### nextWeibull

```public static double nextWeibull(double alpha,
double beta,
RandomEngine randomGenerator)```
Returns a weibull distributed random number. Polar method. See Simulation, Modelling & Analysis by Law & Kelton, pp259

### nextZipfInt

```public static int nextZipfInt(double z,
RandomEngine randomGenerator)```
Returns a zipfian distributed random number with the given skew.

Algorithm from page 551 of: Devroye, Luc (1986) `Non-uniform random variate generation', Springer-Verlag: Berlin. ISBN 3-540-96305-7 (also 0-387-96305-7)

Parameters:
`z` - the skew of the distribution (must be >1.0).

Colt 1.2.0