Class GeometricSampler


  • public final class GeometricSampler
    extends Object
    Sampling from a geometric distribution.

    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 λ, then Y=X is a geometrically distributed random variable with parameter p=1eλ, 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 (1pp) 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().

    Since:
    1.3
    See Also:
    Geometric distribution - related distributions
    • Method Detail

      • of

        public static SharedStateDiscreteSampler of​(UniformRandomProvider rng,
                                                    double probabilityOfSuccess)
        Creates a new geometric distribution sampler. The samples will be provided in the set k=[0, 1, 2, ...] where k indicates the number of failures before the first success.
        Parameters:
        rng - Generator of uniformly distributed random numbers.
        probabilityOfSuccess - The probability of success.
        Returns:
        the sampler
        Throws:
        IllegalArgumentException - if probabilityOfSuccess is not in the range [0 < probabilityOfSuccess <= 1])