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

    java.lang.Object
      org.apache.mahout.math.PersistentObject
          org.apache.mahout.math.jet.random.engine.RandomEngine

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, org.apache.mahout.math.function.DoubleFunction, IntFunction, UnaryFunction

Direct Known Subclasses:
  MersenneTwister

    public abstract class RandomEngine

extends org.apache.mahout.math.PersistentObject
implements UnaryFunction, 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`, Serialized Form

Constructor Summary
`RandomEngine()`

Method Summary
`double` `apply(double dummy)` Equivalent to `raw()`.
`int` `apply(int dummy)` Equivalent to `nextInt()`.
`static RandomEngine` `makeDefault()`
`double` `nextDouble()`
`float` `nextFloat()`
`abstract int` `nextInt()`
`long` `nextLong()`
`double` `raw()`

Methods inherited from class org.apache.mahout.math.PersistentObject
`clone`

Methods inherited from class java.lang.Object
`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 interface `org.apache.mahout.math.function.DoubleFunction`

### 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()

  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).

Copyright © 2008-2010 The Apache Software Foundation. All Rights Reserved.