Colt 1.2.0

cern.jet.random
Class Gamma

java.lang.Object
  extended bycern.colt.PersistentObject
      extended bycern.jet.random.AbstractDistribution
          extended bycern.jet.random.AbstractContinousDistribution
              extended bycern.jet.random.Gamma
All Implemented Interfaces:
Cloneable, DoubleFunction, IntFunction, Serializable

public class Gamma
extends AbstractContinousDistribution

Gamma distribution; math definition, definition of gamma function and animated definition.

p(x) = k * x^(alpha-1) * e^(-x/beta) with k = 1/(g(alpha) * b^a)) and g(a) being the gamma function.

Valid parameter ranges: alpha > 0.

Note: For a Gamma distribution to have the mean mean and variance variance, set the parameters as follows:

 alpha = mean*mean / variance; lambda = 1 / (variance / mean); 
 

Instance methods operate on a user supplied uniform random number generator; they are unsynchronized.

Static methods operate on a default uniform random number generator; they are synchronized.

Implementation:

Method: Acceptance Rejection combined with Acceptance Complement.
High performance implementation. This is a port of RandGamma used in CLHEP 1.4.0 (C++). CLHEP's implementation, in turn, is based on gds.c from the C-RAND / WIN-RAND library. C-RAND's implementation, in turn, is based upon

J.H. Ahrens, U. Dieter (1974): Computer methods for sampling from gamma, beta, Poisson and binomial distributions, Computing 12, 223-246.

and

J.H. Ahrens, U. Dieter (1982): Generating gamma variates by a modified rejection technique, Communications of the ACM 25, 47-54.

Version:
1.0, 09/24/99
See Also:
Serialized Form

Field Summary
 
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
 
Constructor Summary
Gamma(double alpha, double lambda, RandomEngine randomGenerator)
          Constructs a Gamma distribution.
 
Method Summary
 double cdf(double x)
          Returns the cumulative distribution function.
 double nextDouble()
          Returns a random number from the distribution.
 double nextDouble(double alpha, double lambda)
          Returns a random number from the distribution; bypasses the internal state.
 double pdf(double x)
          Returns the probability distribution function.
 void setState(double alpha, double lambda)
          Sets the mean and variance.
static double staticNextDouble(double alpha, double lambda)
          Returns a random number from the distribution.
 String toString()
          Returns a String representation of the receiver.
 
Methods inherited from class cern.jet.random.AbstractDistribution
apply, apply, clone, makeDefaultGenerator, nextInt
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Gamma

public Gamma(double alpha,
             double lambda,
             RandomEngine randomGenerator)
Constructs a Gamma distribution. Example: alpha=1.0, lambda=1.0.

Throws:
IllegalArgumentException - if alpha <= 0.0 || lambda <= 0.0.
Method Detail

cdf

public double cdf(double x)
Returns the cumulative distribution function.


nextDouble

public double nextDouble()
Returns a random number from the distribution.

Specified by:
nextDouble in class AbstractDistribution

nextDouble

public double nextDouble(double alpha,
                         double lambda)
Returns a random number from the distribution; bypasses the internal state.


pdf

public double pdf(double x)
Returns the probability distribution function.


setState

public void setState(double alpha,
                     double lambda)
Sets the mean and variance.

Throws:
IllegalArgumentException - if alpha <= 0.0 || lambda <= 0.0.

staticNextDouble

public static double staticNextDouble(double alpha,
                                      double lambda)
Returns a random number from the distribution.

Throws:
IllegalArgumentException - if alpha <= 0.0 || lambda <= 0.0.

toString

public String toString()
Returns a String representation of the receiver.


Colt 1.2.0

Jump to the Colt Homepage