org.apache.commons.math.distribution

## Class BinomialDistributionImpl

- java.lang.Object
- - org.apache.commons.math.distribution.AbstractDistribution
  - - org.apache.commons.math.distribution.AbstractIntegerDistribution
    - - org.apache.commons.math.distribution.BinomialDistributionImpl

All Implemented Interfaces:
  Serializable, BinomialDistribution, DiscreteDistribution, Distribution, IntegerDistribution

    public class BinomialDistributionImpl
    extends AbstractIntegerDistribution
    implements BinomialDistribution, Serializable

The default implementation of `BinomialDistribution`.

Version:
  $Revision: 1054524 $ $Date: 2011-01-03 05:59:18 +0100 (lun. 03 janv. 2011) $
See Also:
  Serialized Form

### Field Summary

Fields
`private int` `numberOfTrials` The number of trials.
`private double` `probabilityOfSuccess` The probability of success.
`private static long` `serialVersionUID` Serializable version identifier

### Fields inherited from class org.apache.commons.math.distribution.AbstractIntegerDistribution

`randomData`

### Constructor Summary

Constructors
Constructor and Description
`BinomialDistributionImpl(int trials, double p)` Create a binomial distribution with the given number of trials and probability of success.

### Method Summary

Methods
`double` `cumulativeProbability(int x)` For this distribution, X, this method returns P(X ≤ x).
`protected int` `getDomainLowerBound(double p)` Access the domain value lower bound, based on `p`, used to bracket a PDF root.
`protected int` `getDomainUpperBound(double p)` Access the domain value upper bound, based on `p`, used to bracket a PDF root.
`int` `getNumberOfTrials()` Access the number of trials for this distribution.
`double` `getNumericalMean()` Returns the mean.
`double` `getNumericalVariance()` Returns the variance.
`double` `getProbabilityOfSuccess()` Access the probability of success for this distribution.
`int` `getSupportLowerBound()` Returns the lower bound of the support for the distribution.
`int` `getSupportUpperBound()` Returns the upper bound of the support for the distribution.
`int` `inverseCumulativeProbability(double p)` For this distribution, X, this method returns the largest x, such that P(X ≤ x) ≤ `p`.
`double` `probability(int x)` For this distribution, X, this method returns P(X = x).
`void` `setNumberOfTrials(int trials)` Deprecated. as of 2.1 (class will become immutable in 3.0)
`private void` `setNumberOfTrialsInternal(int trials)` Change the number of trials for this distribution.
`void` `setProbabilityOfSuccess(double p)` Deprecated. as of 2.1 (class will become immutable in 3.0)
`private void` `setProbabilityOfSuccessInternal(double p)` Change the probability of success for this distribution.

### Methods inherited from class org.apache.commons.math.distribution.AbstractIntegerDistribution

`cumulativeProbability, cumulativeProbability, cumulativeProbability, isSupportLowerBoundInclusive, isSupportUpperBoundInclusive, probability, reseedRandomGenerator, sample, sample`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.commons.math.distribution.IntegerDistribution

`cumulativeProbability`

### Methods inherited from interface org.apache.commons.math.distribution.DiscreteDistribution

`probability`

### Methods inherited from interface org.apache.commons.math.distribution.Distribution

`cumulativeProbability, cumulativeProbability`

### Field Detail

#### serialVersionUID

    private static final long serialVersionUID

Serializable version identifier

See Also:
  Constant Field Values

#### numberOfTrials

    private int numberOfTrials

The number of trials.

#### probabilityOfSuccess

    private double probabilityOfSuccess

The probability of success.

### Constructor Detail

#### BinomialDistributionImpl

    public BinomialDistributionImpl(int trials,
                            double p)

Create a binomial distribution with the given number of trials and probability of success.

Parameters:
  `trials` - the number of trials.
  `p` - the probability of success.

### Method Detail

#### getNumberOfTrials

    public int getNumberOfTrials()

Access the number of trials for this distribution.

Specified by:
  `getNumberOfTrials` in interface `BinomialDistribution`
Returns:
  the number of trials.

#### getProbabilityOfSuccess

    public double getProbabilityOfSuccess()

Access the probability of success for this distribution.

Specified by:
  `getProbabilityOfSuccess` in interface `BinomialDistribution`
Returns:
  the probability of success.

#### setNumberOfTrials

    @Deprecated
    public void setNumberOfTrials(int trials)

Deprecated. as of 2.1 (class will become immutable in 3.0)
Change the number of trials for this distribution.

Specified by:
  `setNumberOfTrials` in interface `BinomialDistribution`
Parameters:
  `trials` - the new number of trials.
Throws:
  `IllegalArgumentException` - if `trials` is not a valid number of trials.

#### setNumberOfTrialsInternal

    private void setNumberOfTrialsInternal(int trials)

Change the number of trials for this distribution.

Parameters:
  `trials` - the new number of trials.
Throws:
  `IllegalArgumentException` - if `trials` is not a valid number of trials.

#### setProbabilityOfSuccess

    @Deprecated
    public void setProbabilityOfSuccess(double p)

Deprecated. as of 2.1 (class will become immutable in 3.0)
Change the probability of success for this distribution.

Specified by:
  `setProbabilityOfSuccess` in interface `BinomialDistribution`
Parameters:
  `p` - the new probability of success.
Throws:
  `IllegalArgumentException` - if `p` is not a valid probability.

#### setProbabilityOfSuccessInternal

    private void setProbabilityOfSuccessInternal(double p)

Change the probability of success for this distribution.

Parameters:
  `p` - the new probability of success.
Throws:
  `IllegalArgumentException` - if `p` is not a valid probability.

#### getDomainLowerBound

    protected int getDomainLowerBound(double p)

Access the domain value lower bound, based on `p`, used to bracket a PDF root.

Specified by:
  `getDomainLowerBound` in class `AbstractIntegerDistribution`
Parameters:
  `p` - the desired probability for the critical value
Returns:
  domain value lower bound, i.e. P(X < lower bound) < `p`

#### getDomainUpperBound

    protected int getDomainUpperBound(double p)

Access the domain value upper bound, based on `p`, used to bracket a PDF root.

Specified by:
  `getDomainUpperBound` in class `AbstractIntegerDistribution`
Parameters:
  `p` - the desired probability for the critical value
Returns:
  domain value upper bound, i.e. P(X < upper bound) > `p`

#### cumulativeProbability

    public double cumulativeProbability(int x)
                                 throws MathException

For this distribution, X, this method returns P(X ≤ x).

Specified by:
  `cumulativeProbability` in interface `IntegerDistribution`
Specified by:
  `cumulativeProbability` in class `AbstractIntegerDistribution`
Parameters:
  `x` - the value at which the PDF is evaluated.
Returns:
  PDF for this distribution.
Throws:
  `MathException` - if the cumulative probability can not be computed due to convergence or other numerical errors.

#### probability

    public double probability(int x)

For this distribution, X, this method returns P(X = x).

Specified by:
  `probability` in interface `IntegerDistribution`
Parameters:
  `x` - the value at which the PMF is evaluated.
Returns:
  PMF for this distribution.

#### inverseCumulativeProbability

    public int inverseCumulativeProbability(double p)
                                     throws MathException

For this distribution, X, this method returns the largest x, such that P(X ≤ x) ≤ `p`.

Returns `-1` for p=0 and `Integer.MAX_VALUE` for p=1.

Specified by:
  `inverseCumulativeProbability` in interface `IntegerDistribution`
Overrides:
  `inverseCumulativeProbability` in class `AbstractIntegerDistribution`
Parameters:
  `p` - the desired probability
Returns:
  the largest x such that P(X ≤ x) <= p
Throws:
  `MathException` - if the inverse cumulative probability can not be computed due to convergence or other numerical errors.
  `IllegalArgumentException` - if p < 0 or p > 1

#### getSupportLowerBound

    public int getSupportLowerBound()

Returns the lower bound of the support for the distribution. The lower bound of the support is always 0 no matter the number of trials and probability parameter.

Returns:
  lower bound of the support (always 0)
Since:
  2.2

#### getSupportUpperBound

    public int getSupportUpperBound()

Returns the upper bound of the support for the distribution. The upper bound of the support is the number of trials.

Returns:
  upper bound of the support (equal to number of trials)
Since:
  2.2

#### getNumericalMean

    public double getNumericalMean()

Returns the mean. For `n` number of trials and probability parameter `p`, the mean is `n * p`

Returns:
  the mean
Since:
  2.2

#### getNumericalVariance

    public double getNumericalVariance()

Returns the variance. For `n` number of trials and probability parameter `p`, the variance is `n * p * (1 - p)`

Returns:
  the variance
Since:
  2.2