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.

About this class:

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
See Also:
  `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

Jump to the Colt Homepage