cern.jet.random

## Class Gamma

- java.lang.Object
- - cern.colt.PersistentObject
  - - cern.jet.random.AbstractDistribution
    - - cern.jet.random.AbstractContinousDistribution
      - - cern.jet.random.Gamma

- All Implemented Interfaces:
    DoubleFunction, IntFunction, java.io.Serializable, java.lang.Cloneable

      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

    Constructors
    Constructor and Description
    `Gamma(double alpha, double lambda, RandomEngine randomGenerator)` Constructs a Gamma distribution.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.
    `java.lang.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:
        `java.lang.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:
        `java.lang.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:
        `java.lang.IllegalArgumentException` - if `alpha <= 0.0 || lambda <= 0.0`.

    - #### toString

          public java.lang.String toString()

      Returns a String representation of the receiver.
      Overrides:
        `toString` in class `java.lang.Object`

Jump to the Colt Homepage