## org.apache.commons.math3.random
Class SynchronizedRandomGenerator

    java.lang.Object
      org.apache.commons.math3.random.SynchronizedRandomGenerator

All Implemented Interfaces:
  RandomGenerator

    public class SynchronizedRandomGenerator

extends java.lang.Object
implements RandomGenerator

Any `RandomGenerator` implementation can be thread-safe if it is used through an instance of this class. This is achieved by enclosing calls to the methods of the actual generator inside the overridden `synchronized` methods of this class.

Since:
  3.1
Version:
  $Id: SynchronizedRandomGenerator.java 1416643 2012-12-03 19:37:14Z tn $

Field Summary
`private RandomGenerator` `wrapped` Object to which all calls will be delegated.

Constructor Summary
`SynchronizedRandomGenerator(RandomGenerator rng)` Creates a synchronized wrapper for the given `RandomGenerator` instance.

Method Summary
`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.
`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 underlying random number generator using an `int` seed.
`void` `setSeed(int[] seed)` Sets the seed of the underlying random number generator using an `int` array seed.
`void` `setSeed(long seed)` Sets the seed of the underlying 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

### wrapped

    private final RandomGenerator wrapped

  Object to which all calls will be delegated.

Constructor Detail

### SynchronizedRandomGenerator

    public SynchronizedRandomGenerator(RandomGenerator rng)

  Creates a synchronized wrapper for the given `RandomGenerator` instance.

  Parameters:
    `rng` - Generator whose methods will be called through their corresponding overridden synchronized version. To ensure thread-safety, the wrapped generator must not be used directly.

Method Detail

### setSeed

    public void setSeed(int seed)

  Sets the seed of the underlying 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 underlying 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 void setSeed(long seed)

  Sets the seed of the underlying random number generator using a `long` seed.

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

  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.

  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.

  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.

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

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

  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.

  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.

  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 double nextDouble()

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

  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.

  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

Copyright (c) 2003-2013 Apache Software Foundation