Package 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
,Serializable
,Cloneable
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.
Static methods operate on a default uniform random number generator; they are synchronized.
This is a port of hprsc.c from the C-RAND / WIN-RAND library.
C-RAND's implementation, in turn, is based upon
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.
Implementation: High performance implementation. Patchwork Rejection/Inversion method.
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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
private double
private double
private double
private double
private double
private double
private double
private double
private int
private int
private int
private int
private double
private double
private int
private int
private int
private double
protected int
protected int
protected int
private int
private int
private int
private double
private double
private double
private double
private double
private double
private double
private double
private double
private double
private double
protected static HyperGeometric
Fields inherited from class cern.jet.random.AbstractDistribution
randomGenerator
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
-
Constructor Summary
ConstructorsConstructorDescriptionHyperGeometric
(int N, int s, int n, RandomEngine randomGenerator) Constructs a HyperGeometric distribution. -
Method Summary
Modifier and TypeMethodDescriptionprivate static double
fc_lnpk
(int k, int N_Mn, int M, int n) 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.toString()
Returns a String representation of the receiver.private static void
xstaticSetRandomGenerator
(RandomEngine randomGenerator) Sets the uniform random number generated shared by all static methods.Methods inherited from class cern.jet.random.AbstractDiscreteDistribution
nextDouble
Methods inherited from class cern.jet.random.AbstractDistribution
apply, apply, clone, getRandomGenerator, makeDefaultGenerator, setRandomGenerator
-
Field Details
-
my_N
protected int my_N -
my_s
protected int my_s -
my_n
protected int my_n -
N_last
private int N_last -
M_last
private int M_last -
n_last
private int n_last -
N_Mn
private int N_Mn -
m
private int m -
mp
private int mp -
b
private int b -
Mp
private double Mp -
np
private double np -
fm
private double fm -
k2
private int k2 -
k4
private int k4 -
k1
private int k1 -
k5
private int k5 -
dl
private double dl -
dr
private double dr -
r1
private double r1 -
r2
private double r2 -
r4
private double r4 -
r5
private double r5 -
ll
private double ll -
lr
private double lr -
c_pm
private double c_pm -
f1
private double f1 -
f2
private double f2 -
f4
private double f4 -
f5
private double f5 -
p1
private double p1 -
p2
private double p2 -
p3
private double p3 -
p4
private double p4 -
p5
private double p5 -
p6
private double p6
-
-
Constructor Details
-
HyperGeometric
Constructs a HyperGeometric distribution.
-
-
Method Details
-
fc_lnpk
private static double fc_lnpk(int k, int N_Mn, int M, int n) -
hmdu
Returns a random number from the distribution. -
hprs
Returns a random number from the distribution. -
nextInt
public int nextInt()Returns a random number from the distribution.- Specified by:
nextInt
in classAbstractDiscreteDistribution
-
nextInt
public int nextInt(int N, int s, int n) Returns a random number from the distribution; bypasses the internal state. -
nextInt
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
Returns a String representation of the receiver. -
xstaticSetRandomGenerator
Sets the uniform random number generated shared by all static methods.- Parameters:
randomGenerator
- the new uniform random number generator to be shared.
-