Class HyperGeometric

All Implemented Interfaces:
Serializable

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 invalid input: '<'= 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.

See Also:
  • Field Details

    • my_N

      protected int my_N
    • my_s

      protected int my_s
    • my_n

      protected int my_n
  • Constructor Details

    • HyperGeometric

      public HyperGeometric(int N, int s, int n, MersenneTwisterFast randomGenerator)
      Constructs a HyperGeometric distribution.
  • Method Details

    • hmdu

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

      protected int hprs(int N, int M, int n, MersenneTwisterFast 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, MersenneTwisterFast 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.
    • toString

      public String toString()
      Returns a String representation of the receiver.
      Overrides:
      toString in class Object