org.apache.commons.math3.random

## Class BitsStreamGenerator

- java.lang.Object
- - org.apache.commons.math3.random.BitsStreamGenerator

- All Implemented Interfaces:
    Serializable, RandomGenerator
  Direct Known Subclasses:
    AbstractWell, ISAACRandom, MersenneTwister

      public abstract class BitsStreamGenerator
      extends Object
      implements RandomGenerator, Serializable

  Base class for random number generators that generates bits streams.
  Since:
    2.0
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BitsStreamGenerator()` Creates a new random number generator.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()` Clears the cache used by the default implementation of `nextGaussian`.
    `protected abstract int` | `next(int bits)` Generate next pseudorandom number.
    `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 array.
    `void` | `nextBytes(byte[] bytes, int start, int len)` Generates random bytes and places them into a user-supplied 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.
    `long` | `nextLong(long n)` Returns a pseudorandom, uniformly distributed `long` value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.
    `abstract void` | `setSeed(int seed)` Sets the seed of the underlying random number generator using an `int` seed.
    `abstract void` | `setSeed(int[] seed)` Sets the seed of the underlying random number generator using an `int` array seed.
    `abstract 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`

- - ### Constructor Detail

    - #### BitsStreamGenerator

          public BitsStreamGenerator()

      Creates a new random number generator.

  - ### Method Detail

    - #### setSeed

          public abstract 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 abstract 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 abstract 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

    - #### next

          protected abstract int next(int bits)

      Generate next pseudorandom number.

      This method is the core generation algorithm. It is used by all the public generation methods for the various primitive types `nextBoolean()`, `nextBytes(byte[])`, `nextDouble()`, `nextFloat()`, `nextGaussian()`, `nextInt()`, `next(int)` and `nextLong()`.

      Parameters:
        `bits` - number of random bits to produce
      Returns:
        random bits generated

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

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

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

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

    - #### 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)
                      throws IllegalArgumentException

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

      This default implementation is copied from Apache Harmony java.util.Random (r929253).

      Implementation notes:

      - If n is a power of 2, this method returns `(int) ((n * (long) next(31)) >> 31)`.
      - If n is not a power of 2, what is returned is `next(31) % n` with `next(31)` values rejected (i.e. regenerated) until a value that is larger than the remainder of `Integer.MAX_VALUE / n` is generated. Rejection of this initial segment is necessary to ensure a uniform distribution.
      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:
        `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.
      Specified by:
        `nextLong` in interface `RandomGenerator`
      Returns:
        the next pseudorandom, uniformly distributed `long` value from this random number generator's sequence

    - #### nextLong

          public long nextLong(long n)
                        throws IllegalArgumentException

      Returns a pseudorandom, uniformly distributed `long` value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.
      Parameters:
        `n` - the bound on the random number to be returned. Must be positive.
      Returns:
        a pseudorandom, uniformly distributed `long` value between 0 (inclusive) and n (exclusive).
      Throws:
        `IllegalArgumentException` - if n is not positive.

    - #### clear

          public void clear()

      Clears the cache used by the default implementation of `nextGaussian`.

    - #### nextBytes

          public void nextBytes(byte[] bytes)

      Generates random bytes and places them into a user-supplied array.

      The array is filled with bytes extracted from random integers. This implies that the number of random bytes generated may be larger than the length of the byte array.

      Specified by:
        `nextBytes` in interface `RandomGenerator`
      Parameters:
        `bytes` - Array in which to put the generated bytes. Cannot be `null`.

    - #### nextBytes

          public void nextBytes(byte[] bytes,
                       int start,
                       int len)

      Generates random bytes and places them into a user-supplied array.

      The array is filled with bytes extracted from random integers. This implies that the number of random bytes generated may be larger than the length of the byte array.

      Parameters:
        `bytes` - Array in which to put the generated bytes. Cannot be `null`.
        `start` - Index at which to start inserting the generated bytes.
        `len` - Number of bytes to insert.
      Throws:
        `OutOfRangeException` - if `start < 0` or `start >= bytes.length`.
        `OutOfRangeException` - if `len < 0` or `len > bytes.length - start`.

Copyright © 2003–2016 The Apache Software Foundation. All rights reserved.