public final class GeometricSampler extends java.lang.Object
This distribution samples the number of failures before the first success taking values in the
set [0, 1, 2, ...]
.
The sample is computed using a related exponential distribution. If \( X \) is an exponentially distributed random variable with parameter \( \lambda \), then \( Y = \left \lfloor X \right \rfloor \) is a geometrically distributed random variable with parameter \( p = 1 − e^\lambda \), with \( p \) the probability of success.
This sampler outperforms using the InverseTransformDiscreteSampler
with an appropriate
Geometric inverse cumulative probability function.
Usage note: As the probability of success (\( p \)) tends towards zero the mean of the
distribution (\( \frac{1-p}{p} \)) tends towards infinity and due to the use of int
for the sample this can result in truncation of the distribution.
Sampling uses UniformRandomProvider.nextDouble()
.
Modifier and Type | Method | Description |
---|---|---|
static SharedStateDiscreteSampler |
of(org.apache.commons.rng.UniformRandomProvider rng,
double probabilityOfSuccess) |
Creates a new geometric distribution sampler.
|
public static SharedStateDiscreteSampler of(org.apache.commons.rng.UniformRandomProvider rng, double probabilityOfSuccess)
k=[0, 1, 2, ...]
where k
indicates the number of failures before the first
success.rng
- Generator of uniformly distributed random numbers.probabilityOfSuccess
- The probability of success.java.lang.IllegalArgumentException
- if probabilityOfSuccess
is not in the range
[0 < probabilityOfSuccess <= 1]
)Copyright © 2016–2019 The Apache Software Foundation. All rights reserved.