Package cern.jet.random
Class Gamma
- All Implemented Interfaces:
DoubleFunction
,IntFunction
,Serializable
,Cloneable
Gamma distribution; math definition,
definition of gamma function
and animated definition.
Static methods operate on a default uniform random number generator; they are synchronized.
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
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.
Implementation:
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:
-
Field Summary
FieldsFields inherited from class cern.jet.random.AbstractDistribution
randomGenerator
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
-
Constructor Summary
ConstructorsConstructorDescriptionGamma
(double alpha, double lambda, RandomEngine randomGenerator) Constructs a Gamma distribution. -
Method Summary
Modifier and TypeMethodDescriptiondouble
cdf
(double x) Returns the cumulative distribution function.double
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.toString()
Returns a String representation of the receiver.private static void
xstaticSetRandomGenerator
(RandomEngine randomGenerator) Sets the uniform random number generated shared by all static methods.Methods inherited from class cern.jet.random.AbstractDistribution
apply, apply, clone, getRandomGenerator, makeDefaultGenerator, nextInt, setRandomGenerator
-
Field Details
-
alpha
protected double alpha -
lambda
protected double lambda
-
-
Constructor Details
-
Gamma
Constructs a Gamma distribution. Example: alpha=1.0, lambda=1.0.- Throws:
IllegalArgumentException
- if alpha <= 0.0 || lambda <= 0.0.
-
-
Method Details
-
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 classAbstractDistribution
-
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
Returns a String representation of the receiver. -
xstaticSetRandomGenerator
Sets the uniform random number generated shared by all static methods.- Parameters:
randomGenerator
- the new uniform random number generator to be shared.
-