cern.jet.random

## Class HyperGeometric

- java.lang.Object
- - cern.colt.PersistentObject
  - - cern.jet.random.AbstractDistribution
    - - cern.jet.random.AbstractDiscreteDistribution
      - - cern.jet.random.HyperGeometric

All Implemented Interfaces:
  DoubleFunction, IntFunction, java.io.Serializable, java.lang.Cloneable

    public class HyperGeometric
    extends AbstractDiscreteDistribution

HyperGeometric distribution; See the math definition The hypergeometric distribution with parameters `N`, `n` and `s` is the probability distribution of the random variable X, whose value is the number of successes in a sample of `n` items from a population of size `N` that has `s` 'success' items and `N - s` 'failure' items.

`p(k) = C(s,k) * C(N-s,n-k) / C(N,n)` where `C(a,b) = a! / (b! * (a-b)!)`.

valid for N >= 2, s,n <= N.

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. Patchwork Rejection/Inversion method.

This is a port of `hprsc.c` from the C-RAND / WIN-RAND library. C-RAND's implementation, in turn, is based upon

H. Zechner (1994): Efficient sampling from continuous and discrete unimodal distributions, Doctoral Dissertation, 156 pp., Technical University Graz, Austria.

Version:
  1.0, 09/24/99
See Also:
  Serialized Form

### Field Summary

### Fields inherited from class cern.colt.PersistentObject

`serialVersionUID`

### Constructor Summary

Constructors
Constructor and Description
`HyperGeometric(int N, int s, int n, RandomEngine randomGenerator)` Constructs a HyperGeometric distribution.

### Method Summary

Methods
`int` `nextInt()` Returns a random number from the distribution.
`int` `nextInt(int N, int s, int n)` Returns a random number from the distribution; bypasses the internal state.
`double` `pdf(int k)` Returns the probability distribution function.
`void` `setState(int N, int s, int n)` Sets the parameters.
`static double` `staticNextInt(int N, int M, int n)` Returns a random number from the distribution.
`java.lang.String` `toString()` Returns a String representation of the receiver.

### Methods inherited from class cern.jet.random.AbstractDiscreteDistribution

`nextDouble`

### Methods inherited from class cern.jet.random.AbstractDistribution

`apply, apply, clone, makeDefaultGenerator`

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

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### HyperGeometric

    public HyperGeometric(int N,
                  int s,
                  int n,
                  RandomEngine randomGenerator)

Constructs a HyperGeometric distribution.

### Method Detail

#### nextInt

    public int nextInt()

Returns a random number from the distribution.

Specified by:
  `nextInt` in class `AbstractDiscreteDistribution`

#### nextInt

    public int nextInt(int N,
              int s,
              int n)

Returns a random number from the distribution; bypasses the internal state.

#### pdf

    public double pdf(int k)

Returns the probability distribution function.

#### setState

    public void setState(int N,
                int s,
                int n)

Sets the parameters.

#### staticNextInt

    public static double staticNextInt(int N,
                       int M,
                       int n)

Returns a random number from the distribution.

#### toString

    public java.lang.String toString()

Returns a String representation of the receiver.

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