edu.cmu.minorthird.classify.algorithms.random
Class Gamma

java.lang.Object
  extended by edu.cmu.minorthird.classify.algorithms.random.Gamma

public class Gamma
extends java.lang.Object

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
Author:
wolfgang.hoschek@cern.ch, Edoardo Airoldi

Field Summary
protected  double alpha
           
protected  RandomElement gen
           
protected  double lambda
           
 
Constructor Summary
Gamma(double alpha, double lambda)
          Constructs a Gamma distribution.
 
Method Summary
 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.
 void setState(double alpha, double lambda)
          Sets the mean and variance.
 java.lang.String toString()
          Returns a String representation of the receiver.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

gen

protected RandomElement gen

alpha

protected double alpha

lambda

protected double lambda
Constructor Detail

Gamma

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

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

nextDouble

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


nextDouble

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


setState

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

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