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 class
Base class to implement Cheng's algorithms for the beta distribution.private static final class
Computes one sample using Cheng's BB algorithm, when beta distributionalpha
andbeta
shape parameters are both larger than 1.private static final class
Computes one sample using Cheng's BC algorithm, when at least one of beta distributionalpha
orbeta
shape parameters is smaller than 1. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SharedStateContinuousSampler
The appropriate beta sampler for the parameters.private static final double
Natural logarithm of 4. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
ChengBetaSampler
(SharedStateContinuousSampler delegate) ChengBetaSampler
(UniformRandomProvider rng, double alpha, double beta) Creates a sampler instance. -
Method Summary
Modifier and TypeMethodDescriptionstatic SharedStateContinuousSampler
of
(UniformRandomProvider rng, double alpha, double beta) Creates a new beta distribution sampler.double
sample()
Creates adouble
sample.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 org.apache.commons.rng.sampling.distribution.SamplerBase
nextDouble, nextInt, nextInt, nextLong
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.distribution.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 <= 0
orbeta <= 0
-
-
Method Details
-
sample
public double sample()Creates adouble
sample.- Specified by:
sample
in interfaceContinuousSampler
- Returns:
- a sample.
-
toString
- Overrides:
toString
in 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:
withUniformRandomProvider
in 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 <= 0
orbeta <= 0
- Since:
- 1.3
-