SSJ
V. 2.6.2.

umontreal.iro.lecuyer.randvarmulti
Class DirichletGen

java.lang.Object
  extended by umontreal.iro.lecuyer.randvarmulti.RandomMultivariateGen
      extended by umontreal.iro.lecuyer.randvarmulti.DirichletGen

public class DirichletGen
extends RandomMultivariateGen

Extends RandomMultivariateGen for a Dirichlet distribution. This distribution uses the parameters α1,..., αk, and has density

f (x1,…, xk) = Γ(α0)∏i=1kxiαi-1 / ∏i=1kΓ(αi))

where α0 = ∑i=1kαi.

Here, the successive coordinates of the Dirichlet vector are generated via the class GammaAcceptanceRejectionGen in package randvar, using the same stream for all the uniforms.

Note: when the shape parameters αi are all very small, the results may lose some numerical precision. For example, the value of the density function of the Dirichlet multivariate may return 0. Also, the generated xi will often have one variate equals to 1, and all others set at (or near) 0.


Constructor Summary
DirichletGen(RandomStream stream, double[] alphas)
          Constructs a new Dirichlet generator with parameters αi+1 = alphas[i], for i = 0,…, k - 1, and the stream stream.
 
Method Summary
 double getAlpha(int i)
          Returns the αi+1 parameter for this Dirichlet generator.
 void nextPoint(double[] p)
          Generates a point from the Dirichlet distribution.
static void nextPoint(RandomStream stream, double[] alphas, double[] p)
          Generates a new point from the Dirichlet distribution with parameters alphas, using the stream stream.
 
Methods inherited from class umontreal.iro.lecuyer.randvarmulti.RandomMultivariateGen
getDimension, getStream, nextArrayOfPoints, setStream
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DirichletGen

public DirichletGen(RandomStream stream,
                    double[] alphas)
Constructs a new Dirichlet generator with parameters αi+1 = alphas[i], for i = 0,…, k - 1, and the stream stream.

Parameters:
stream - the random number stream used to generate uniforms.
alphas - the αi parameters of the generated distribution.
Throws:
IllegalArgumentException - if one αk is negative or 0.
NullPointerException - if any argument is null.
Method Detail

getAlpha

public double getAlpha(int i)
Returns the αi+1 parameter for this Dirichlet generator.

Parameters:
i - the index of the parameter.
Returns:
the value of the parameter.
Throws:
ArrayIndexOutOfBoundsException - if i is negative or greater than or equal to getDimension.

nextPoint

public static void nextPoint(RandomStream stream,
                             double[] alphas,
                             double[] p)
Generates a new point from the Dirichlet distribution with parameters alphas, using the stream stream. The generated values are placed into p.

Parameters:
stream - the random number stream used to generate the uniforms.
alphas - the αi parameters of the distribution, for i = 1,…, k.
p - the array to be filled with the generated point.

nextPoint

public void nextPoint(double[] p)
Generates a point from the Dirichlet distribution.

Specified by:
nextPoint in class RandomMultivariateGen
Parameters:
p - the array to be filled with the generated point.

SSJ
V. 2.6.2.

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.