cern.jet.random
Class HyperGeometric

java.lang.Object
  extended by cern.colt.PersistentObject
      extended by cern.jet.random.AbstractDistribution
          extended by cern.jet.random.AbstractDiscreteDistribution
              extended by 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.

Author:
wolfgang.hoschek@cern.ch
See Also:
Serialized Form

Field Summary
protected  int my_n
           
protected  int my_N
           
protected  int my_s
           
protected static HyperGeometric shared
           
 
Fields inherited from class cern.jet.random.AbstractDistribution
randomGenerator
 
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
 
Constructor Summary
HyperGeometric(int N, int s, int n, RandomEngine randomGenerator)
          Constructs a HyperGeometric distribution.
 
Method Summary
protected  int hmdu(int N, int M, int n, RandomEngine randomGenerator)
          Returns a random number from the distribution.
protected  int hprs(int N, int M, int n, RandomEngine randomGenerator)
          Returns a random number from the distribution.
 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.
protected  int nextInt(int N, int M, int n, RandomEngine randomGenerator)
          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, getRandomGenerator, makeDefaultGenerator, setRandomGenerator
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

my_N

protected int my_N

my_s

protected int my_s

my_n

protected int my_n

shared

protected static HyperGeometric shared
Constructor Detail

HyperGeometric

public HyperGeometric(int N,
                      int s,
                      int n,
                      RandomEngine randomGenerator)
Constructs a HyperGeometric distribution.

Method Detail

hmdu

protected int hmdu(int N,
                   int M,
                   int n,
                   RandomEngine randomGenerator)
Returns a random number from the distribution.


hprs

protected int hprs(int N,
                   int M,
                   int n,
                   RandomEngine randomGenerator)
Returns a random number from the distribution.


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.


nextInt

protected int nextInt(int N,
                      int M,
                      int n,
                      RandomEngine randomGenerator)
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