Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## sim.util.distribution
Class Binomial

    java.lang.Object
      sim.util.distribution.AbstractDistribution
          sim.util.distribution.AbstractDiscreteDistribution
              sim.util.distribution.Binomial

All Implemented Interfaces:
  java.io.Serializable

    public class Binomial

extends AbstractDiscreteDistribution

Binomial distribution; See the math definition and animated definition.

`p(x) = k * p^k * (1-p)^(n-k)` with `k = n! / (k! * (n-k)!)`.

Instance methods operate on a user supplied uniform random number generator; they are unsynchronized.

Static methods operate on a default uniform random number generator; they are synchronized.

Implementation: High performance implementation. Acceptance Rejection/Inversion method. This is a port of RandBinomial used in CLHEP 1.4.0 (C++). CLHEP's implementation is, in turn, based on

V. Kachitvichyanukul, B.W. Schmeiser (1988): Binomial random variate generation, Communications of the ACM 31, 216-222.

See Also:
  Serialized Form

Field Summary
`protected int` | `n`
`protected double` | `p`

Fields inherited from class sim.util.distribution.AbstractDistribution
`randomGenerator`

Constructor Summary
`Binomial(int n, double p, MersenneTwisterFast randomGenerator)` Constructs a binomial distribution.

Method Summary
`double` | `cdf(int k)` Returns the cumulative distribution function.
`protected int` | `generateBinomial(int n, double p)` * Binomial-Distribution - Acceptance Rejection/Inversion * * * Acceptance Rejection method combined with Inversion for * generating Binomial random numbers with parameters * n (number of trials) and p (probability of success).
`int` | `nextInt()` Returns a random number from the distribution.
`int` | `nextInt(int n, double p)` Returns a random number from the distribution with the given parameters n and p; bypasses the internal state.
`double` | `pdf(int k)` Returns the probability distribution function.
`void` | `setNandP(int n, double p)` Sets the parameters number of trials and the probability of success.
`java.lang.String` | `toString()` Returns a String representation of the receiver.

Methods inherited from class sim.util.distribution.AbstractDiscreteDistribution
`nextDouble`

Methods inherited from class sim.util.distribution.AbstractDistribution
`apply, apply, getRandomGenerator, setRandomGenerator`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### n

    protected int n

### p

    protected double p

Constructor Detail

### Binomial

    public Binomial(int n,
                    double p,
                    MersenneTwisterFast randomGenerator)

  Constructs a binomial distribution. Example: n=1, p=0.5.

  Parameters:
    `n` - the number of trials (also known as sample size).
    `p` - the probability of success.
    `randomGenerator` - a uniform random number generator.
  Throws:
    `java.lang.IllegalArgumentException` - if `n*Math.min(p,1-p) <= 0.0`

Method Detail

### cdf

    public double cdf(int k)

  Returns the cumulative distribution function.

### generateBinomial

    protected int generateBinomial(int n,
                                   double p)

  * Binomial-Distribution - Acceptance Rejection/Inversion * * * Acceptance Rejection method combined with Inversion for * generating Binomial random numbers with parameters * n (number of trials) and p (probability of success). * For min(n*p,n*(1-p)) < 10 the Inversion method is applied: * The random numbers are generated via sequential search, * starting at the lowest index k=0. The cumulative probabilities * are avoided by using the technique of chop-down. * For min(n*p,n*(1-p)) >= 10 Acceptance Rejection is used: * The algorithm is based on a hat-function which is uniform in * the centre region and exponential in the tails. * A triangular immediate acceptance region in the centre speeds * up the generation of binomial variates. * If candidate k is near the mode, f(k) is computed recursively * starting at the mode m. * The acceptance test by Stirling's formula is modified * according to W. Hoermann (1992): The generation of binomial * random variates, to appear in J. Statist. Comput. Simul. * If p < .5 the algorithm is applied to parameters n, p. * Otherwise p is replaced by 1-p, and k is replaced by n - k. * * * FUNCTION: - samples a random number from the binomial * distribution with parameters n and p and is * valid for n*min(p,1-p) > 0. * REFERENCE: - V. Kachitvichyanukul, B.W. Schmeiser (1988): * Binomial random variate generation, * Communications of the ACM 31, 216-222. * SUBPROGRAMS: - StirlingCorrection() * ... Correction term of the Stirling * approximation for log(k!) * (series in 1/k or table values * for small k) with long int k * - randomGenerator ... (0,1)-Uniform engine * *

### nextInt

    public int nextInt()

  Returns a random number from the distribution.

  Specified by:
    `nextInt` in class `AbstractDiscreteDistribution`

### nextInt

    public int nextInt(int n,
                       double p)

  Returns a random number from the distribution with the given parameters n and p; bypasses the internal state.

  Parameters:
    `n` - the number of trials
    `p` - the probability of success.
  Throws:
    `java.lang.IllegalArgumentException` - if `n*Math.min(p,1-p) <= 0.0`

### pdf

    public double pdf(int k)

  Returns the probability distribution function.

### setNandP

    public void setNandP(int n,
                         double p)

  Sets the parameters number of trials and the probability of success.

  Parameters:
    `n` - the number of trials
    `p` - the probability of success.
  Throws:
    `java.lang.IllegalArgumentException` - if `n*Math.min(p,1-p) <= 0.0`

### toString

    public java.lang.String toString()

  Returns a String representation of the receiver.

  Overrides:
    `toString` in class `java.lang.Object`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD