Class AbstractIntegerDistribution

    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serializable version identifier
        See Also:
        Constant Field Values
      • randomData

        @Deprecated
        protected final RandomDataImpl randomData
        Deprecated.
        As of 3.1, to be removed in 4.0. Please use the random instance variable instead.
        RandomData instance used to generate samples from the distribution.
      • random

        protected final RandomGenerator random
        RNG instance used to generate samples from the distribution.
        Since:
        3.1
    • Constructor Detail

      • AbstractIntegerDistribution

        protected AbstractIntegerDistribution​(RandomGenerator rng)
        Parameters:
        rng - Random number generator.
        Since:
        3.1
    • Method Detail

      • cumulativeProbability

        public double cumulativeProbability​(int x0,
                                            int x1)
                                     throws NumberIsTooLargeException
        For a random variable X whose values are distributed according to this distribution, this method returns P(x0 < X <= x1). The default implementation uses the identity

        P(x0 < X <= x1) = P(X <= x1) - P(X <= x0)

        Specified by:
        cumulativeProbability in interface IntegerDistribution
        Parameters:
        x0 - the exclusive lower bound
        x1 - the inclusive upper bound
        Returns:
        the probability that a random variable with this distribution will take a value between x0 and x1, excluding the lower and including the upper endpoint
        Throws:
        NumberIsTooLargeException - if x0 > x1
      • solveInverseCumulativeProbability

        protected int solveInverseCumulativeProbability​(double p,
                                                        int lower,
                                                        int upper)
        This is a utility function used by inverseCumulativeProbability(double). It assumes 0 < p < 1 and that the inverse cumulative probability lies in the bracket (lower, upper]. The implementation does simple bisection to find the smallest p-quantile inf{x in Z | P(X<=x) >= p}.
        Parameters:
        p - the cumulative probability
        lower - a value satisfying cumulativeProbability(lower) < p
        upper - a value satisfying p <= cumulativeProbability(upper)
        Returns:
        the smallest p-quantile of this distribution
      • reseedRandomGenerator

        public void reseedRandomGenerator​(long seed)
        Reseed the random generator used to generate samples.
        Specified by:
        reseedRandomGenerator in interface IntegerDistribution
        Parameters:
        seed - the new seed
      • sample

        public int sample()
        Generate a random value sampled from this distribution. The default implementation uses the inversion method.
        Specified by:
        sample in interface IntegerDistribution
        Returns:
        a random value
      • sample

        public int[] sample​(int sampleSize)
        Generate a random sample from the distribution. The default implementation generates the sample by calling sample() in a loop.
        Specified by:
        sample in interface IntegerDistribution
        Parameters:
        sampleSize - the number of random values to generate
        Returns:
        an array representing the random sample
      • checkedCumulativeProbability

        private double checkedCumulativeProbability​(int argument)
                                             throws MathInternalError
        Computes the cumulative probability function and checks for NaN values returned. Throws MathInternalError if the value is NaN. Rethrows any exception encountered evaluating the cumulative probability function. Throws MathInternalError if the cumulative probability function returns NaN.
        Parameters:
        argument - input value
        Returns:
        the cumulative probability
        Throws:
        MathInternalError - if the cumulative probability is NaN
      • logProbability

        public double logProbability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns log(P(X = x)), where log is the natural logarithm. In other words, this method represents the logarithm of the probability mass function (PMF) for the distribution. Note that due to the floating point precision and under/overflow issues, this method will for some distributions be more precise and faster than computing the logarithm of IntegerDistribution.probability(int).

        The default implementation simply computes the logarithm of probability(x).

        Parameters:
        x - the point at which the PMF is evaluated
        Returns:
        the logarithm of the value of the probability mass function at x