org.apache.commons.math3.distribution
Class AbstractRealDistribution

java.lang.Object
  extended by org.apache.commons.math3.distribution.AbstractRealDistribution
All Implemented Interfaces:
Serializable, RealDistribution
Direct Known Subclasses:
BetaDistribution, CauchyDistribution, ChiSquaredDistribution, ExponentialDistribution, FDistribution, GammaDistribution, LogNormalDistribution, NormalDistribution, TDistribution, TriangularDistribution, UniformRealDistribution, WeibullDistribution

public abstract class AbstractRealDistribution
extends Object
implements RealDistribution, Serializable

Base class for probability distributions on the reals. Default implementations are provided for some of the methods that do not vary from distribution to distribution.

Since:
3.0
Version:
$Id: AbstractRealDistribution.java 1244107 2012-02-14 16:17:55Z erans $
See Also:
Serialized Form

Field Summary
protected  RandomDataImpl randomData
          RandomData instance used to generate samples from the distribution.
private static long serialVersionUID
          Serializable version identifier
static double SOLVER_DEFAULT_ABSOLUTE_ACCURACY
          Default accuracy.
private  double solverAbsoluteAccuracy
          Solver absolute accuracy for inverse cumulative computation
 
Constructor Summary
protected AbstractRealDistribution()
          Default constructor.
 
Method Summary
 double cumulativeProbability(double x0, double x1)
          For a random variable X whose values are distributed according to this distribution, this method returns P(x0 < X <= x1).
protected  double getSolverAbsoluteAccuracy()
          Returns the solver absolute accuracy for inverse cumulative computation.
 double inverseCumulativeProbability(double p)
          Computes the quantile function of this distribution.
 void reseedRandomGenerator(long seed)
          Reseed the random generator used to generate samples.
 double sample()
          Generate a random value sampled from this distribution.
 double[] sample(int sampleSize)
          Generate a random sample from the distribution.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.commons.math3.distribution.RealDistribution
cumulativeProbability, density, getNumericalMean, getNumericalVariance, getSupportLowerBound, getSupportUpperBound, isSupportConnected, isSupportLowerBoundInclusive, isSupportUpperBoundInclusive, probability
 

Field Detail

SOLVER_DEFAULT_ABSOLUTE_ACCURACY

public static final double SOLVER_DEFAULT_ABSOLUTE_ACCURACY
Default accuracy.

See Also:
Constant Field Values

serialVersionUID

private static final long serialVersionUID
Serializable version identifier

See Also:
Constant Field Values

randomData

protected final RandomDataImpl randomData
RandomData instance used to generate samples from the distribution.


solverAbsoluteAccuracy

private double solverAbsoluteAccuracy
Solver absolute accuracy for inverse cumulative computation

Constructor Detail

AbstractRealDistribution

protected AbstractRealDistribution()
Default constructor.

Method Detail

cumulativeProbability

public double cumulativeProbability(double x0,
                                    double x1)
                             throws NumberIsTooLargeException
For a random variable X whose values are distributed according to this distribution, this method returns P(x0 < X <= x1). The default implementation uses the identity

P(x0 < X <= x1) = P(X <= x1) - P(X <= x0)

Specified by:
cumulativeProbability in interface RealDistribution
Parameters:
x0 - the exclusive lower bound
x1 - the inclusive upper bound
Returns:
the probability that a random variable with this distribution takes a value between x0 and x1, excluding the lower and including the upper endpoint
Throws:
NumberIsTooLargeException - if x0 > x1

inverseCumulativeProbability

public double inverseCumulativeProbability(double p)
                                    throws OutOfRangeException
Computes the quantile function of this distribution. For a random variable X distributed according to this distribution, the returned value is The default implementation returns

Specified by:
inverseCumulativeProbability in interface RealDistribution
Parameters:
p - the cumulative probability
Returns:
the smallest p-quantile of this distribution (largest 0-quantile for p = 0)
Throws:
OutOfRangeException - if p < 0 or p > 1

getSolverAbsoluteAccuracy

protected double getSolverAbsoluteAccuracy()
Returns the solver absolute accuracy for inverse cumulative computation. You can override this method in order to use a Brent solver with an absolute accuracy different from the default.

Returns:
the maximum absolute error in inverse cumulative probability estimates

reseedRandomGenerator

public void reseedRandomGenerator(long seed)
Reseed the random generator used to generate samples.

Specified by:
reseedRandomGenerator in interface RealDistribution
Parameters:
seed - the new seed

sample

public double sample()
Generate a random value sampled from this distribution. The default implementation uses the inversion method.

Specified by:
sample in interface RealDistribution
Returns:
a random value.

sample

public double[] sample(int sampleSize)
Generate a random sample from the distribution. The default implementation generates the sample by calling sample() in a loop.

Specified by:
sample in interface RealDistribution
Parameters:
sampleSize - the number of random values to generate
Returns:
an array representing the random sample


Copyright (c) 2003-2013 Apache Software Foundation