
Parallel Colt 0.7.2  
PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object cern.colt.PersistentObject cern.jet.random.tdouble.AbstractDoubleDistribution cern.jet.random.tdouble.AbstractDiscreteDistribution cern.jet.random.tdouble.EmpiricalWalker
public class EmpiricalWalker
Discrete Empirical distribution (pdf's can be specified).
The probability distribution function (pdf) must be provided by the user as an array of positive real numbers. The pdf does not need to be provided in the form of relative probabilities, absolute probabilities are also accepted.
Instance methods operate on a user supplied uniform random number generator; they are unsynchronized.
Implementation: Walker's algorithm. Generating a random number takes O(1), i.e. constant time, as opposed to commonly used algorithms with logarithmic time complexity. Preprocessing time (on object construction) is O(k) where k is the number of elements of the provided empirical pdf. Space complexity is O(k).
This is a port of discrete.c which was written by James Theiler and is distributed with GSL 0.4.1. Theiler's implementation in turn is based upon
Alastair J. Walker, An efficient method for generating discrete random variables with general distributions, ACM Trans Math Soft 3, 253256 (1977).
See also: D. E. Knuth, The Art of Computer Programming, Volume 2 (Seminumerical algorithms), 3rd edition, AddisonWesley (1997), p120.
Field Summary 

Fields inherited from class cern.colt.PersistentObject 

serialVersionUID 
Constructor Summary  

EmpiricalWalker(double[] pdf,
int interpolationType,
DoubleRandomEngine randomGenerator)
Constructs an Empirical distribution. 
Method Summary  

double 
cdf(int k)
Returns the cumulative distribution function. 
Object 
clone()
Returns a deep copy of the receiver; the copy will produce identical sequences. 
int 
nextInt()
Returns a random integer k with probability pdf(k). 
double 
pdf(int k)
Returns the probability distribution function. 
void 
setState(double[] pdf,
int interpolationType)
Sets the distribution parameters. 
void 
setState2(double[] pdf)
Sets the distribution parameters. 
String 
toString()
Returns a String representation of the receiver. 
Methods inherited from class cern.jet.random.tdouble.AbstractDiscreteDistribution 

nextDouble 
Methods inherited from class cern.jet.random.tdouble.AbstractDoubleDistribution 

apply, apply, makeDefaultGenerator 
Methods inherited from class java.lang.Object 

equals, getClass, hashCode, notify, notifyAll, wait, wait, wait 
Constructor Detail 

public EmpiricalWalker(double[] pdf, int interpolationType, DoubleRandomEngine randomGenerator)
pdf
 the probability distribution function.interpolationType
 can be either Empirical.NO_INTERPOLATION or
Empirical.LINEAR_INTERPOLATION.randomGenerator
 a uniform random number generator.
IllegalArgumentException
 if at least one of the three conditions above is violated.Method Detail 

public double cdf(int k)
public Object clone()
clone
in class AbstractDoubleDistribution
public int nextInt()
nextInt
in class AbstractDiscreteDistribution
public double pdf(int k)
public void setState(double[] pdf, int interpolationType)
pdf
 probability distribution function.
IllegalArgumentException
 if at least one of the three conditions above is violated.public void setState2(double[] pdf)
pdf
 probability distribution function.
IllegalArgumentException
 if at least one of the three conditions above is violated.public String toString()
toString
in class Object

Parallel Colt 0.7.2  
PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 