public class Gamma extends Object
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.
| Modifier and Type | Field and Description |
|---|---|
protected double |
alpha |
protected double |
lambda |
protected RandomEngine |
randomGenerator |
protected static Gamma |
shared |
| Constructor and Description |
|---|
Gamma(double alpha,
double lambda,
RandomEngine randomGenerator)
Constructs a Gamma distribution.
|
| Modifier and Type | Method and Description |
|---|---|
double |
applyAsDouble(double dummy)
Equivalent to nextDouble().
|
int |
applyAsInt(int dummy)
Equivalent to nextInt().
|
double |
cdf(double x)
Returns the cumulative distribution function.
|
Object |
clone()
Returns a deep copy of the receiver; the copy will produce identical sequences.
|
protected RandomEngine |
getRandomGenerator()
Returns the used uniform random number generator;
|
static RandomEngine |
makeDefaultGenerator()
Constructs and returns a new uniform random number generation engine seeded with the current time.
|
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.
|
int |
nextInt()
Returns a random number from the distribution; returns (int) Math.round(nextDouble()).
|
double |
pdf(double x)
Returns the probability distribution function.
|
protected void |
setRandomGenerator(RandomEngine randomGenerator)
Sets the uniform random generator internally used.
|
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.
|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitandThen, compose, identityandThen, compose, identityprotected double alpha
protected double lambda
protected static Gamma shared
protected RandomEngine randomGenerator
public Gamma(double alpha,
double lambda,
RandomEngine randomGenerator)
alpha - alphalambda - lambdarandomGenerator - generatorIllegalArgumentException - if alpha <= 0.0 || lambda <= 0.0.public double cdf(double x)
x - xpublic double nextDouble()
public double nextDouble(double alpha,
double lambda)
alpha - alphalambda - lambdapublic double pdf(double x)
x - xpublic void setState(double alpha,
double lambda)
alpha - alphalambda - lambdaIllegalArgumentException - if alpha <= 0.0 || lambda <= 0.0.public static double staticNextDouble(double alpha,
double lambda)
alpha - alphalambda - lambdaIllegalArgumentException - if alpha <= 0.0 || lambda <= 0.0.public String toString()
public double applyAsDouble(double dummy)
applyAsDouble in interface DoubleUnaryOperatorpublic int applyAsInt(int dummy)
applyAsInt in interface IntUnaryOperatorpublic Object clone()
protected RandomEngine getRandomGenerator()
public static RandomEngine makeDefaultGenerator()
MersenneTwister.public int nextInt()
protected void setRandomGenerator(RandomEngine randomGenerator)
randomGenerator - inputCopyright 2009-Present by OpenGamma Inc. and individual contributors
Apache v2 licensed
Additional documentation can be found at strata.opengamma.io.