Class DirichletSampler
- java.lang.Object
-
- org.apache.commons.rng.sampling.distribution.DirichletSampler
-
- All Implemented Interfaces:
ObjectSampler<double[]>
,SharedStateObjectSampler<double[]>
,SharedStateSampler<SharedStateObjectSampler<double[]>>
public abstract class DirichletSampler extends Object implements SharedStateObjectSampler<double[]>
Sampling from a Dirichlet distribution.Sampling uses:
- Since:
- 1.4
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract int
getK()
Gets the number of categories.protected abstract double
nextGamma(int category)
Create a gamma sample for the given category.static DirichletSampler
of(UniformRandomProvider rng, double... alpha)
Creates a new Dirichlet distribution sampler.double[]
sample()
Create an object sample.static DirichletSampler
symmetric(UniformRandomProvider rng, int k, double alpha)
Creates a new symmetric Dirichlet distribution sampler using the same concentration parameter for each category.String
toString()
abstract DirichletSampler
withUniformRandomProvider(UniformRandomProvider rng)
Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.commons.rng.sampling.ObjectSampler
samples, samples
-
-
-
-
Method Detail
-
sample
public double[] sample()
Create an object sample.- Specified by:
sample
in interfaceObjectSampler<double[]>
- Returns:
- a sample.
-
getK
protected abstract int getK()
Gets the number of categories.- Returns:
- k
-
nextGamma
protected abstract double nextGamma(int category)
Create a gamma sample for the given category.- Parameters:
category
- Category.- Returns:
- the sample
-
withUniformRandomProvider
public abstract DirichletSampler withUniformRandomProvider(UniformRandomProvider rng)
Create a new instance of the sampler with the same underlying state using the given uniform random provider as the source of randomness.- Specified by:
withUniformRandomProvider
in interfaceSharedStateSampler<SharedStateObjectSampler<double[]>>
- Parameters:
rng
- Generator of uniformly distributed random numbers.- Returns:
- the sampler
-
of
public static DirichletSampler of(UniformRandomProvider rng, double... alpha)
Creates a new Dirichlet distribution sampler.- Parameters:
rng
- Generator of uniformly distributed random numbers.alpha
- Concentration parameters.- Returns:
- the sampler
- Throws:
IllegalArgumentException
- if the number of concentration parameters is less than 2; or if any concentration parameter is not strictly positive.
-
symmetric
public static DirichletSampler symmetric(UniformRandomProvider rng, int k, double alpha)
Creates a new symmetric Dirichlet distribution sampler using the same concentration parameter for each category.- Parameters:
rng
- Generator of uniformly distributed random numbers.k
- Number of categories.alpha
- Concentration parameter.- Returns:
- the sampler
- Throws:
IllegalArgumentException
- if the number of categories is less than 2; or if the concentration parameter is not strictly positive.
-
-