Class ChengBetaSampler
java.lang.Object
org.apache.commons.rng.sampling.distribution.SamplerBase
org.apache.commons.rng.sampling.distribution.ChengBetaSampler
- All Implemented Interfaces:
ContinuousSampler, SharedStateContinuousSampler, SharedStateSampler<SharedStateContinuousSampler>
Sampling from a beta distribution.
Uses Cheng's algorithms for beta distribution sampling:
R. C. H. Cheng, "Generating beta variates with nonintegral shape parameters", Communications of the ACM, 21, 317-322, 1978.
Sampling uses UniformRandomProvider.nextDouble().
- Since:
- 1.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classBase class to implement Cheng's algorithms for the beta distribution.private static final classComputes one sample using Cheng's BB algorithm, when beta distributionalphaandbetashape parameters are both larger than 1.private static final classComputes one sample using Cheng's BC algorithm, when at least one of beta distributionalphaorbetashape parameters is smaller than 1. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SharedStateContinuousSamplerThe appropriate beta sampler for the parameters.private static final doubleNatural logarithm of 4. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateChengBetaSampler(SharedStateContinuousSampler delegate) ChengBetaSampler(UniformRandomProvider rng, double alpha, double beta) Creates a sampler instance. -
Method Summary
Modifier and TypeMethodDescriptionstatic SharedStateContinuousSamplerof(UniformRandomProvider rng, double alpha, double beta) Creates a new beta distribution sampler.doublesample()Creates adoublesample.toString()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 SamplerBase
nextDouble, nextInt, nextInt, nextLongMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ContinuousSampler
samples, samples
-
Field Details
-
LN_4
private static final double LN_4Natural logarithm of 4. -
delegate
The appropriate beta sampler for the parameters.
-
-
Constructor Details
-
ChengBetaSampler
Creates a sampler instance.- Parameters:
rng- Generator of uniformly distributed random numbers.alpha- Distribution first shape parameter.beta- Distribution second shape parameter.- Throws:
IllegalArgumentException- ifalpha <= 0orbeta <= 0
-
-
Method Details
-
sample
public double sample()Creates adoublesample.- Specified by:
samplein interfaceContinuousSampler- Returns:
- a sample.
-
toString
- Overrides:
toStringin classSamplerBase
-
withUniformRandomProvider
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:
withUniformRandomProviderin interfaceSharedStateSampler<SharedStateContinuousSampler>- Parameters:
rng- Generator of uniformly distributed random numbers.- Returns:
- the sampler
- Since:
- 1.3
-
of
Creates a new beta distribution sampler.- Parameters:
rng- Generator of uniformly distributed random numbers.alpha- Distribution first shape parameter.beta- Distribution second shape parameter.- Returns:
- the sampler
- Throws:
IllegalArgumentException- ifalpha <= 0orbeta <= 0- Since:
- 1.3
-