cern.jet.random.engine

## Class RandomEngine

- java.lang.Object
- - cern.colt.PersistentObject
  - - cern.jet.random.engine.RandomEngine

- All Implemented Interfaces:
    DoubleFunction, IntFunction, java.io.Serializable, java.lang.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:
    `MersenneTwister`, `MersenneTwister64`, `Random`, Serialized Form

- - ### Field Summary

    - ### Fields inherited from class cern.colt.PersistentObject

      `serialVersionUID`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `double` | `apply(double dummy)` Equivalent to `raw()`.
    `int` | `apply(int dummy)` Equivalent to `nextInt()`.
    `static RandomEngine` | `makeDefault()` Constructs and returns a new uniform random number engine seeded with the current time.
    `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).
    `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).
    `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`);
    `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`).
    `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, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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

Jump to the Colt Homepage