Class BinomialDistribution

  • All Implemented Interfaces:
    DiscreteDistribution

    public final class BinomialDistribution
    extends AbstractDiscreteDistribution
    Implementation of the binomial distribution.

    The probability mass function of \( X \) is:

    \[ f(k; n, p) = \binom{n}{k} p^k (1-p)^{n-k} \]

    for \( n \in \{0, 1, 2, \dots\} \) the number of trials, \( p \in [0, 1] \) the probability of success, \( k \in \{0, 1, \dots, n\} \) the number of successes, and

    \[ \binom{n}{k} = \frac{n!}{k! \, (n-k)!} \]

    is the binomial coefficient.

    See Also:
    Binomial distribution (Wikipedia), Binomial distribution (MathWorld)
    • Field Detail

      • numberOfTrials

        private final int numberOfTrials
        The number of trials.
      • probabilityOfSuccess

        private final double probabilityOfSuccess
        The probability of success.
      • pmf0

        private final double pmf0
        Cached value for pmf(x=0).
      • pmfn

        private final double pmfn
        Cached value for pmf(x=n).
    • Constructor Detail

      • BinomialDistribution

        private BinomialDistribution​(int trials,
                                     double p)
        Parameters:
        trials - Number of trials.
        p - Probability of success.
    • Method Detail

      • of

        public static BinomialDistribution of​(int trials,
                                              double p)
        Creates a binomial distribution.
        Parameters:
        trials - Number of trials.
        p - Probability of success.
        Returns:
        the distribution
        Throws:
        java.lang.IllegalArgumentException - if trials < 0, or if p < 0 or p > 1.
      • getNumberOfTrials

        public int getNumberOfTrials()
        Gets the number of trials parameter of this distribution.
        Returns:
        the number of trials.
      • getProbabilityOfSuccess

        public double getProbabilityOfSuccess()
        Gets the probability of success parameter of this distribution.
        Returns:
        the probability of success.
      • probability

        public double probability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns P(X = x). In other words, this method represents the probability mass function (PMF) for the distribution.
        Parameters:
        x - Point at which the PMF is evaluated.
        Returns:
        the value of the probability mass function at x.
      • 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.
        Parameters:
        x - Point at which the PMF is evaluated.
        Returns:
        the logarithm of the value of the probability mass function at x.
      • cumulativeProbability

        public double cumulativeProbability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns P(X <= x). In other, words, this method represents the (cumulative) distribution function (CDF) for this distribution.
        Parameters:
        x - Point at which the CDF is evaluated.
        Returns:
        the probability that a random variable with this distribution takes a value less than or equal to x.
      • survivalProbability

        public double survivalProbability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns P(X > x). In other words, this method represents the complementary cumulative distribution function.

        By default, this is defined as 1 - cumulativeProbability(x), but the specific implementation may be more accurate.

        Parameters:
        x - Point at which the survival function is evaluated.
        Returns:
        the probability that a random variable with this distribution takes a value greater than x.
      • getMean

        public double getMean()
        Gets the mean of this distribution.

        For number of trials \( n \) and probability of success \( p \), the mean is \( np \).

        Returns:
        the mean.
      • getVariance

        public double getVariance()
        Gets the variance of this distribution.

        For number of trials \( n \) and probability of success \( p \), the variance is \( np (1 - p) \).

        Returns:
        the variance.
      • getSupportLowerBound

        public int getSupportLowerBound()
        Gets the lower bound of the support. This method must return the same value as inverseCumulativeProbability(0), i.e. \( \inf \{ x \in \mathbb Z : P(X \le x) \gt 0 \} \). By convention, Integer.MIN_VALUE should be substituted for negative infinity.

        The lower bound of the support is always 0 except for the probability parameter p = 1.

        Returns:
        0 or the number of trials.
      • getSupportUpperBound

        public int getSupportUpperBound()
        Gets the upper bound of the support. This method must return the same value as inverseCumulativeProbability(1), i.e. \( \inf \{ x \in \mathbb Z : P(X \le x) = 1 \} \). By convention, Integer.MAX_VALUE should be substituted for positive infinity.

        The upper bound of the support is the number of trials except for the probability parameter p = 0.

        Returns:
        number of trials or 0.