Package cern.jet.random
Class ChiSquare
java.lang.Object
cern.colt.PersistentObject
cern.jet.random.AbstractDistribution
cern.jet.random.AbstractContinousDistribution
cern.jet.random.ChiSquare
- All Implemented Interfaces:
DoubleFunction
,IntFunction
,Serializable
,Cloneable
ChiSquare distribution; See the math definition
and animated definition.
A special case of the Gamma distribution.
Static methods operate on a default uniform random number generator; they are synchronized.
Method: Ratio of Uniforms with shift.
High performance implementation. This is a port of RandChiSquare used in CLHEP 1.4.0 (C++).
CLHEP's implementation, in turn, is based on chru.c from the C-RAND / WIN-RAND library.
C-RAND's implementation, in turn, is based upon
p(x) = (1/g(f/2)) * (x/2)^(f/2-1) * exp(-x/2) with g(a) being the gamma function and f being the degrees of freedom.
Valid parameter ranges: freedom > 0.
Instance methods operate on a user supplied uniform random number generator; they are unsynchronized.
Implementation:
J.F. Monahan (1987): An algorithm for generating chi random variables, ACM Trans. Math. Software 13, 168-172.
- Version:
- 1.0, 09/24/99
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate double
protected double
private double
protected static ChiSquare
private double
private double
private double
Fields inherited from class cern.jet.random.AbstractDistribution
randomGenerator
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
-
Constructor Summary
ConstructorsConstructorDescriptionChiSquare
(double freedom, RandomEngine randomGenerator) Constructs a ChiSquare distribution. -
Method Summary
Modifier and TypeMethodDescriptiondouble
cdf
(double x) Returns the cumulative distribution function.double
Returns a random number from the distribution.double
nextDouble
(double freedom) Returns a random number from the distribution; bypasses the internal state.double
pdf
(double x) Returns the probability distribution function.void
setState
(double freedom) Sets the distribution parameter.static double
staticNextDouble
(double freedom) 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.AbstractDistribution
apply, apply, clone, getRandomGenerator, makeDefaultGenerator, nextInt, setRandomGenerator
-
Field Details
-
freedom
protected double freedom -
freedom_in
private double freedom_in -
b
private double b -
vm
private double vm -
vp
private double vp -
vd
private double vd
-
-
Constructor Details
-
ChiSquare
Constructs a ChiSquare distribution. Example: freedom=1.0.- Parameters:
freedom
- degrees of freedom.- Throws:
IllegalArgumentException
- if freedom < 1.0.
-
-
Method Details
-
cdf
public double cdf(double x) Returns the cumulative distribution function. -
nextDouble
public double nextDouble()Returns a random number from the distribution.- Specified by:
nextDouble
in classAbstractDistribution
-
nextDouble
public double nextDouble(double freedom) Returns a random number from the distribution; bypasses the internal state.- Parameters:
freedom
- degrees of freedom. It should hold freedom < 1.0.
-
pdf
public double pdf(double x) Returns the probability distribution function. -
setState
public void setState(double freedom) Sets the distribution parameter.- Parameters:
freedom
- degrees of freedom.- Throws:
IllegalArgumentException
- if freedom < 1.0.
-
staticNextDouble
public static double staticNextDouble(double freedom) Returns a random number from the distribution.- Parameters:
freedom
- degrees of freedom.- Throws:
IllegalArgumentException
- if freedom < 1.0.
-
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.
-