org.apache.mahout.math.jet.random.engine
Class RandomEngine

java.lang.Object
  extended by org.apache.mahout.math.function.DoubleFunction
      extended by org.apache.mahout.math.jet.random.engine.RandomEngine
All Implemented Interfaces:
IntFunction
Direct Known Subclasses:
MersenneTwister

public abstract class RandomEngine
extends DoubleFunction
implements IntFunction

Abstract base class for uniform pseudo-random number generating engines.

Most probability distributions are obtained by using a uniform pseudo-random number generation engine followed by a transformation to the desired distribution. Thus, subclasses of this class are at the core of computational statistics, simulations, Monte Carlo methods, etc.

Subclasses produce uniformly distributed int's and long's in the closed intervals [Integer.MIN_VALUE,Integer.MAX_VALUE] and [Long.MIN_VALUE,Long.MAX_VALUE], respectively, as well as float's and double's in the open unit intervals (0.0f,1.0f) and (0.0,1.0), respectively.

Subclasses need to override one single method only: nextInt(). All other methods generating different data types or ranges are usually layered upon nextInt(). long's are formed by concatenating two 32 bit int's. float's are formed by dividing the interval [0.0f,1.0f] into 232 sub intervals, then randomly choosing one subinterval. double's are formed by dividing the interval [0.0,1.0] into 264 sub intervals, then randomly choosing one subinterval.

Note that this implementation is not synchronized.

See Also:
MersenneTwister, Random

Constructor Summary
RandomEngine()
           
 
Method Summary
 double apply(double dummy)
          Equivalent to raw().
 int apply(int dummy)
          Equivalent to nextInt().
 double nextDouble()
           
 float nextFloat()
           
abstract  int nextInt()
           
 long nextLong()
           
 double raw()
           
 
Methods inherited from class org.apache.mahout.math.function.DoubleFunction
isDensifying
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RandomEngine

public RandomEngine()
Method Detail

apply

public double apply(double dummy)
Equivalent to raw(). This has the effect that random engines can now be used as function objects, returning a random number upon function evaluation.

Specified by:
apply in class DoubleFunction
Parameters:
dummy - double for the argument
Returns:
the result of applying the function

apply

public int apply(int dummy)
Equivalent to nextInt(). This has the effect that random engines can now be used as function objects, returning a random number upon function evaluation.

Specified by:
apply in interface IntFunction
Parameters:
dummy - argument passed to the function.
Returns:
the result of the function.

nextDouble

public double nextDouble()
Returns:
a 64 bit uniformly distributed random number in the open unit interval (0.0,1.0) (excluding 0.0 and 1.0).

nextFloat

public float nextFloat()
Returns:
a 32 bit uniformly distributed random number in the open unit interval (0.0f, 1.0f) (excluding 0.0f and 1.0f).

nextInt

public abstract int nextInt()
Returns:
a 32 bit uniformly distributed random number in the closed interval [Integer.MIN_VALUE,Integer.MAX_VALUE] (including Integer.MIN_VALUE and Integer.MAX_VALUE);

nextLong

public long nextLong()
Returns:
a 64 bit uniformly distributed random number in the closed interval [Long.MIN_VALUE,Long.MAX_VALUE] (including Long.MIN_VALUE and Long.MAX_VALUE).

raw

public double raw()
Returns:
a 32 bit uniformly distributed random number in the open unit interval (0.0, 1.0) (excluding 0.0 and 1.0).


Copyright © 2008–2014 The Apache Software Foundation. All rights reserved.