Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.math.random
Class AbstractRandomGenerator

    java.lang.Object
      org.apache.commons.math.random.AbstractRandomGenerator

All Implemented Interfaces:
  RandomGenerator

    public abstract class AbstractRandomGenerator

extends java.lang.Object
implements RandomGenerator

Abstract class implementing the `RandomGenerator` interface. Default implementations for all methods other than `nextDouble()` and `setSeed(long)` are provided.

All data generation methods are based on `nextDouble().` Concrete implementations must override this method and should provide better / more performant implementations of the other methods if the underlying PRNG supplies them.

Since:
  1.1
Version:
  $Revision: 811685 $ $Date: 2009-09-05 13:36:48 -0400 (Sat, 05 Sep 2009) $

Field Summary
`private double` | `cachedNormalDeviate` Cached random normal value.

Constructor Summary
`AbstractRandomGenerator()` Construct a RandomGenerator.

Method Summary
`void` | `clear()` Clears the cache used by the default implementation of `nextGaussian()`.
`boolean` | `nextBoolean()` Returns the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence.
`void` | `nextBytes(byte[] bytes)` Generates random bytes and places them into a user-supplied byte array.
`abstract double` | `nextDouble()` Returns the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence.
`float` | `nextFloat()` Returns the next pseudorandom, uniformly distributed `float` value between `0.0` and `1.0` from this random number generator's sequence.
`double` | `nextGaussian()` Returns the next pseudorandom, Gaussian ("normally") distributed `double` value with mean `0.0` and standard deviation `1.0` from this random number generator's sequence.
`int` | `nextInt()` Returns the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence.
`int` | `nextInt(int n)` Returns a pseudorandom, uniformly distributed `int` value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.
`long` | `nextLong()` Returns the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence.
`void` | `setSeed(int seed)` Sets the seed of the underyling random number generator using an `int` seed.
`void` | `setSeed(int[] seed)` Sets the seed of the underyling random number generator using an `int` array seed.
`abstract void` | `setSeed(long seed)` Sets the seed of the underyling random number generator using a `long` seed.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### cachedNormalDeviate

    private double cachedNormalDeviate

  Cached random normal value. The default implementation for `nextGaussian()` generates pairs of values and this field caches the second value so that the full algorithm is not executed for every activation. The value `Double.NaN` signals that there is no cached value. Use `clear()` to clear the cached value.

Constructor Detail

### AbstractRandomGenerator

    public AbstractRandomGenerator()

  Construct a RandomGenerator.

Method Detail

### clear

    public void clear()

  Clears the cache used by the default implementation of `nextGaussian()`. Implemementations that do not override the default implementation of `nextGaussian` should call this method in the implementation of `setSeed(long)`

### setSeed

    public void setSeed(int seed)

  Sets the seed of the underyling random number generator using an `int` seed.

  Sequences of values generated starting with the same seeds should be identical.

  Specified by:
    `setSeed` in interface `RandomGenerator`
  Parameters:
    `seed` - the seed value

### setSeed

    public void setSeed(int[] seed)

  Sets the seed of the underyling random number generator using an `int` array seed.

  Sequences of values generated starting with the same seeds should be identical.

  Specified by:
    `setSeed` in interface `RandomGenerator`
  Parameters:
    `seed` - the seed value

### setSeed

    public abstract void setSeed(long seed)

  Sets the seed of the underyling random number generator using a `long` seed. Sequences of values generated starting with the same seeds should be identical.

  Implementations that do not override the default implementation of `nextGaussian` should include a call to `clear()` in the implementation of this method.

  Specified by:
    `setSeed` in interface `RandomGenerator`
  Parameters:
    `seed` - the seed value

### nextBytes

    public void nextBytes(byte[] bytes)

  Generates random bytes and places them into a user-supplied byte array. The number of random bytes produced is equal to the length of the byte array.

  The default implementation fills the array with bytes extracted from random integers generated using `nextInt()`.

  Specified by:
    `nextBytes` in interface `RandomGenerator`
  Parameters:
    `bytes` - the non-null byte array in which to put the random bytes

### nextInt

    public int nextInt()

  Returns the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence. All 232 possible `int` values should be produced with (approximately) equal probability.

  The default implementation provided here returns

       (int) (nextDouble() * Integer.MAX_VALUE)

  Specified by:
    `nextInt` in interface `RandomGenerator`
  Returns:
    the next pseudorandom, uniformly distributed `int` value from this random number generator's sequence

### nextInt

    public int nextInt(int n)

  Returns a pseudorandom, uniformly distributed `int` value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.

  The default implementation returns

       (int) (nextDouble() * n

  Specified by:
    `nextInt` in interface `RandomGenerator`
  Parameters:
    `n` - the bound on the random number to be returned. Must be positive.
  Returns:
    a pseudorandom, uniformly distributed `int` value between 0 (inclusive) and n (exclusive).
  Throws:
    `java.lang.IllegalArgumentException` - if n is not positive.

### nextLong

    public long nextLong()

  Returns the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence. All 264 possible `long` values should be produced with (approximately) equal probability.

  The default implementation returns

       (long) (nextDouble() * Long.MAX_VALUE)

  Specified by:
    `nextLong` in interface `RandomGenerator`
  Returns:
    the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence

### nextBoolean

    public boolean nextBoolean()

  Returns the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence.

  The default implementation returns

       nextDouble() <= 0.5

  Specified by:
    `nextBoolean` in interface `RandomGenerator`
  Returns:
    the next pseudorandom, uniformly distributed `boolean` value from this random number generator's sequence

### nextFloat

    public float nextFloat()

  Returns the next pseudorandom, uniformly distributed `float` value between `0.0` and `1.0` from this random number generator's sequence.

  The default implementation returns

       (float) nextDouble()

  Specified by:
    `nextFloat` in interface `RandomGenerator`
  Returns:
    the next pseudorandom, uniformly distributed `float` value between `0.0` and `1.0` from this random number generator's sequence

### nextDouble

    public abstract double nextDouble()

  Returns the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence.

  This method provides the underlying source of random data used by the other methods.

  Specified by:
    `nextDouble` in interface `RandomGenerator`
  Returns:
    the next pseudorandom, uniformly distributed `double` value between `0.0` and `1.0` from this random number generator's sequence

### nextGaussian

    public double nextGaussian()

  Returns the next pseudorandom, Gaussian ("normally") distributed `double` value with mean `0.0` and standard deviation `1.0` from this random number generator's sequence.

  The default implementation uses the Polar Method due to G.E.P. Box, M.E. Muller and G. Marsaglia, as described in D. Knuth, The Art of Computer Programming, 3.4.1C.

  The algorithm generates a pair of independent random values. One of these is cached for reuse, so the full algorithm is not executed on each activation. Implementations that do not override this method should make sure to call `clear()` to clear the cached value in the implementation of `setSeed(long)`.

  Specified by:
    `nextGaussian` in interface `RandomGenerator`
  Returns:
    the next pseudorandom, Gaussian ("normally") distributed `double` value with mean `0.0` and standard deviation `1.0` from this random number generator's sequence

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (c) 2003-2011 Apache Software Foundation