SSJ  3.3.1
Stochastic Simulation in Java
Public Member Functions | Static Public Member Functions | List of all members
GammaAcceptanceRejectionGen Class Reference

This class implements gamma random variate generators using a method that combines acceptance-rejection with acceptance-complement, and proposed in [2], [4] . More...

Inheritance diagram for GammaAcceptanceRejectionGen:
[legend]
Collaboration diagram for GammaAcceptanceRejectionGen:
[legend]

Public Member Functions

 GammaAcceptanceRejectionGen (RandomStream s, RandomStream aux, double alpha, double lambda)
 Creates a gamma random variate generator with parameters \(\alpha=\) alpha and \(\lambda=\) lambda, using main stream s and auxiliary stream aux. More...
 
 GammaAcceptanceRejectionGen (RandomStream s, double alpha, double lambda)
 Creates a gamma random variate generator with parameters \(\alpha=\) alpha and \(\lambda=\) lambda, using stream s.
 
 GammaAcceptanceRejectionGen (RandomStream s, RandomStream aux, GammaDist dist)
 Creates a new generator object for the gamma distribution dist, using main stream s and auxiliary stream aux. More...
 
 GammaAcceptanceRejectionGen (RandomStream s, GammaDist dist)
 Creates a new generator object for the gamma distribution dist and stream s for both the main and auxiliary stream.
 
RandomStream getAuxStream ()
 Returns the auxiliary stream associated with this object.
 
double nextDouble ()
 
double nextDoubleLog ()
 Returns the natural log value of a new gamma variate. More...
 
- Public Member Functions inherited from GammaGen
 GammaGen (RandomStream s, double alpha, double lambda)
 Creates a gamma random variate generator with parameters \(\alpha=\) alpha and \(\lambda\) = lambda, using stream s.
 
 GammaGen (RandomStream s, double alpha)
 Creates a gamma random variate generator with parameters \(\alpha=\) alpha and \(\lambda= 1\), using stream s.
 
 GammaGen (RandomStream s, GammaDist dist)
 Creates a new generator object for the gamma distribution dist and stream s.
 
double getAlpha ()
 Returns the parameter \(\alpha\) of this object.
 
double getLambda ()
 Returns the parameter \(\lambda\) of this object.
 
- Public Member Functions inherited from RandomVariateGen
 RandomVariateGen (RandomStream s, Distribution dist)
 Creates a new random variate generator from the distribution dist, using stream s. More...
 
double nextDouble ()
 Generates a random number from the continuous distribution contained in this object. More...
 
void nextArrayOfDouble (double[] v, int start, int n)
 Generates n random numbers from the continuous distribution contained in this object. More...
 
double [] nextArrayOfDouble (int n)
 Generates n random numbers from the continuous distribution contained in this object, and returns them in a new array of size n. More...
 
RandomStream getStream ()
 Returns the umontreal.ssj.rng.RandomStream used by this generator. More...
 
void setStream (RandomStream stream)
 Sets the umontreal.ssj.rng.RandomStream used by this generator to stream.
 
Distribution getDistribution ()
 Returns the umontreal.ssj.probdist.Distribution used by this generator. More...
 
String toString ()
 Returns a String containing information about the current generator.
 

Static Public Member Functions

static double nextDouble (RandomStream s, RandomStream aux, double alpha, double lambda)
 Generates a new gamma variate with parameters \(\alpha= \) alpha and \(\lambda= \) lambda, using main stream s and auxiliary stream aux.
 
static double nextDouble (RandomStream s, double alpha, double lambda)
 Same as nextDouble (s, s, alpha, lambda).
 
static double nextDoubleLog (RandomStream s, RandomStream aux, double alpha, double lambda)
 Returns the natural log value of a new gamma variate with parameters \(\alpha= \) alpha and \(\lambda= \) lambda, using main stream s and auxiliary stream aux. More...
 
static double nextDoubleLog (RandomStream s, double alpha, double lambda)
 Same as nextDoubleLog (s, s, alpha, lambda).
 
- Static Public Member Functions inherited from GammaGen
static double nextDouble (RandomStream s, double alpha, double lambda)
 Generates a new gamma random variate with parameters \(\alpha= \) alpha and \(\lambda= \) lambda, using stream s.
 

Additional Inherited Members

- Protected Member Functions inherited from GammaGen
void setParams (double alpha, double lambda)
 Sets the parameter \(\alpha\) and \(\lambda\) of this object.
 
- Protected Attributes inherited from GammaGen
double alpha = -1.0
 
double lambda = -1.0
 
- Protected Attributes inherited from RandomVariateGen
RandomStream stream
 
Distribution dist
 

Detailed Description

This class implements gamma random variate generators using a method that combines acceptance-rejection with acceptance-complement, and proposed in [2], [4] .

It uses acceptance-rejection for \(\alpha<1\) and acceptance-complement for \(\alpha\ge1\).

The above papers may lead to numerical errors when \(\alpha\) is small. When \(\alpha< 0.1\), the acceptance-rejection algorithm of [168]  will be used. This algorithm generates the log value of a gamma variate and it can handle a very small \(\alpha\) parameter. Use the nextDoubleLog methods to get the natural log value of the generated gamma.

When \(\alpha\) is close to 0, the generated gamma variate may be numerically too small to be represented by the primitive date type double. The method nextDoubleLog can be used to generate the natural log value of a gamma variate. This allows the generation of very small gamma variates.

For each gamma variate, the first uniform required is taken from the main stream and all additional uniforms (after the first rejection) are obtained from the auxiliary stream.

Constructor & Destructor Documentation

◆ GammaAcceptanceRejectionGen() [1/2]

GammaAcceptanceRejectionGen ( RandomStream  s,
RandomStream  aux,
double  alpha,
double  lambda 
)

Creates a gamma random variate generator with parameters \(\alpha=\) alpha and \(\lambda=\) lambda, using main stream s and auxiliary stream aux.

The auxiliary stream is used when a random number of uniforms is required for a rejection-type generation method.

◆ GammaAcceptanceRejectionGen() [2/2]

Creates a new generator object for the gamma distribution dist, using main stream s and auxiliary stream aux.

The auxiliary stream is used when a random number of uniforms is required for a rejection-type generation method.

Member Function Documentation

◆ nextDoubleLog() [1/2]

double nextDoubleLog ( )

Returns the natural log value of a new gamma variate.

When the shape parameter \(\alpha\) is close to 0, generating the log value of the gamma variate is numerically more stable than generating directly the gamma value with nextDouble.

◆ nextDoubleLog() [2/2]

static double nextDoubleLog ( RandomStream  s,
RandomStream  aux,
double  alpha,
double  lambda 
)
static

Returns the natural log value of a new gamma variate with parameters \(\alpha= \) alpha and \(\lambda= \) lambda, using main stream s and auxiliary stream aux.

When the shape parameter \(\alpha\) is close to 0, generating the log value of the gamma variate is numerically more stable than generating directly the gamma value with nextDouble.


The documentation for this class was generated from the following file: