Class RandomEngine

java.lang.Object
cern.colt.PersistentObject
cern.jet.random.engine.RandomEngine
All Implemented Interfaces:
DoubleFunction, IntFunction, Serializable, Cloneable
Direct Known Subclasses:
DRand, MersenneTwister

public abstract class RandomEngine extends PersistentObject implements DoubleFunction, 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.

Version:
1.0, 09/24/99
See Also:
  • Field Summary

    Fields inherited from class cern.colt.PersistentObject

    serialVersionUID
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Makes this class non instantiable, but still let's others inherit from it.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    apply(double dummy)
    Equivalent to raw().
    int
    apply(int dummy)
    Equivalent to nextInt().
    Constructs and returns a new uniform random number engine seeded with the current time.
    double
    Returns a 64 bit uniformly distributed random number in the open unit interval (0.0,1.0) (excluding 0.0 and 1.0).
    float
    Returns a 32 bit uniformly distributed random number in the open unit interval (0.0f,1.0f) (excluding 0.0f and 1.0f).
    abstract int
    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);
    long
    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).
    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).

    Methods inherited from class cern.colt.PersistentObject

    clone

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • RandomEngine

      protected RandomEngine()
      Makes this class non instantiable, but still let's others inherit from it.
  • Method Details

    • 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 interface DoubleFunction
      Parameters:
      dummy - argument passed to the function.
      Returns:
      the result of 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.
    • makeDefault

      public static RandomEngine makeDefault()
      Constructs and returns a new uniform random number engine seeded with the current time. Currently this is MersenneTwister.
    • 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).