weka.core
Class RandomVariates

java.lang.Object
  extended byjava.util.Random
      extended byweka.core.RandomVariates
All Implemented Interfaces:
java.io.Serializable

public final class RandomVariates
extends java.util.Random

Class implementing some simple random variates generator.

Version:
$Revision: 1.1 $
Author:
Xin Xu (xx5@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
 
Fields inherited from class java.util.Random
 
Constructor Summary
RandomVariates()
          Simply the constructor of super class
RandomVariates(long seed)
          Simply the constructor of super class
 
Method Summary
static void main(java.lang.String[] ops)
          Main method for testing this class.
protected  int next(int bits)
          Simply use the method of the super class
 double nextErlang(int a)
          Generate a value of a variate following standard Erlang distribution.
 double nextExponential()
          Generate a value of a variate following standard exponential distribution using simple inverse method.
 double nextGamma(double a)
          Generate a value of a variate following standard Gamma distribution with shape parameter a.
 
Methods inherited from class java.util.Random
nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong, setSeed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RandomVariates

public RandomVariates()
Simply the constructor of super class


RandomVariates

public RandomVariates(long seed)
Simply the constructor of super class

Parameters:
seed - the seed in this random object
Method Detail

next

protected int next(int bits)
Simply use the method of the super class

Parameters:
bits - - random bits
Returns:
the next pseudorandom value from this random number generator's sequence.

nextExponential

public double nextExponential()
Generate a value of a variate following standard exponential distribution using simple inverse method.

Variates related to standard Exponential can be generated using simple transformations.

Returns:
a value of the variate

nextErlang

public double nextErlang(int a)
                  throws java.lang.Exception
Generate a value of a variate following standard Erlang distribution. It can be used when the shape parameter is an integer and not too large, say, <100. When the parameter is not an integer (which is often named Gamma distribution) or is large, use nextGamma(double a) instead.

Parameters:
a - the shape parameter, must be no less than 1
Returns:
a value of the variate
Throws:
if - parameter less than 1
java.lang.Exception

nextGamma

public double nextGamma(double a)
                 throws java.lang.Exception
Generate a value of a variate following standard Gamma distribution with shape parameter a.

If a>1, it uses a rejection method developed by Minh(1988)"Generating Gamma Variates", ACM Trans. on Math. Software, Vol.14, No.3, pp261-266.
If a<1, it uses the algorithm "GS" developed by Ahrens and Dieter(1974) "COMPUTER METHODS FOR SAMPLING FROM GAMMA, BETA, POISSON AND BINOMIAL DISTRIBUTIONS", COMPUTING, 12 (1974), pp223-246, and further implemented in Fortran by Ahrens, Kohrt and Dieter(1983) "Algorithm 599: sampling from Gamma and Poisson distributions", ACM Trans. on Math. Software, Vol.9 No.2, pp255-257.

Variates related to standard Gamma can be generated using simple transformations.

Parameters:
a - the shape parameter, must be greater than 1
Returns:
a value of the variate
Throws:
if - parameter not greater than 1
java.lang.Exception

main

public static void main(java.lang.String[] ops)
Main method for testing this class.

Parameters:
ops - # of variates/seed, default is 10/45