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 intprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate intprivate intprivate intprivate intprivate doubleprivate doubleprivate intprivate intprivate intprivate doubleprotected intprotected intprotected intprivate intprivate intprivate intprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprotected static HyperGeometricFields inherited from class AbstractDistribution
randomGeneratorFields inherited from class PersistentObject
serialVersionUID -
Constructor Summary
ConstructorsConstructorDescriptionHyperGeometric(int N, int s, int n, RandomEngine randomGenerator) Constructs a HyperGeometric distribution. -
Method Summary
Modifier and TypeMethodDescriptionprivate static doublefc_lnpk(int k, int N_Mn, int M, int n) protected inthmdu(int N, int M, int n, RandomEngine randomGenerator) Returns a random number from the distribution.protected inthprs(int N, int M, int n, RandomEngine randomGenerator) Returns a random number from the distribution.intnextInt()Returns a random number from the distribution.intnextInt(int N, int s, int n) Returns a random number from the distribution; bypasses the internal state.protected intnextInt(int N, int M, int n, RandomEngine randomGenerator) Returns a random number from the distribution; bypasses the internal state.doublepdf(int k) Returns the probability distribution function.voidsetState(int N, int s, int n) Sets the parameters.static doublestaticNextInt(int N, int M, int n) Returns a random number from the distribution.toString()Returns a String representation of the receiver.private static voidxstaticSetRandomGenerator(RandomEngine randomGenerator) Sets the uniform random number generated shared by all static methods.Methods inherited from class AbstractDiscreteDistribution
nextDoubleMethods inherited from class 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:
nextIntin 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
-
xstaticSetRandomGenerator
Sets the uniform random number generated shared by all static methods.- Parameters:
randomGenerator- the new uniform random number generator to be shared.
-