Class JVMRandom

java.lang.Object
java.util.Random
org.apache.commons.lang.math.JVMRandom
All Implemented Interfaces:
Serializable

public final class JVMRandom extends Random

JVMRandom is a wrapper that supports all possible Random methods via the Math.random() method and its system-wide Random object.

It does this to allow for a Random class in which the seed is shared between all members of the class - a better name would have been SharedSeedRandom.

N.B. the current implementation overrides the methods Random.nextInt(int) and Random.nextLong() to produce positive numbers ranging from 0 (inclusive) to MAX_VALUE (exclusive).

Since:
2.0
Version:
$Id: JVMRandom.java 911986 2010-02-19 21:19:05Z niallp $
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private boolean
    Ensures that only the parent constructor can call reseed.
    private static final long
    Required for serialization support.
    private static final Random
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a new instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    private static int
    bitsRequired(long num)
    Count the number of bits required to represent a long number.
    private static long
    Get the next unsigned random long
    boolean
    Returns the next pseudorandom, uniformly distributed boolean value from the Math.random() sequence.
    void
    nextBytes(byte[] byteArray)
    Unsupported in 2.0.
    double
    Synonymous to the Math.random() call.
    float
    Returns the next pseudorandom, uniformly distributed float value between 0.0 and 1.0 from the Math.random() sequence.
    double
    Unsupported in 2.0.
    int
    Returns the next pseudorandom, uniformly distributed int value from the Math.random() sequence.
    int
    nextInt(int n)
    Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), from the Math.random() sequence.
    long
    Returns the next pseudorandom, uniformly distributed long value from the Math.random() sequence.
    static long
    nextLong(long n)
    Returns a pseudorandom, uniformly distributed long value between 0 (inclusive) and the specified value (exclusive), from the Math.random() sequence.
    void
    setSeed(long seed)
    Unsupported in 2.0.

    Methods inherited from class java.util.Random

    doubles, doubles, doubles, doubles, ints, ints, ints, ints, longs, longs, longs, longs, next

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Required for serialization support.
      See Also:
    • SHARED_RANDOM

      private static final Random SHARED_RANDOM
    • constructed

      private boolean constructed
      Ensures that only the parent constructor can call reseed.
  • Constructor Details

    • JVMRandom

      public JVMRandom()
      Constructs a new instance.
  • Method Details

    • setSeed

      public void setSeed(long seed)
      Unsupported in 2.0.
      Overrides:
      setSeed in class Random
      Parameters:
      seed - ignored
      Throws:
      UnsupportedOperationException
    • nextGaussian

      public double nextGaussian()
      Unsupported in 2.0.
      Overrides:
      nextGaussian in class Random
      Returns:
      Nothing, this method always throws an UnsupportedOperationException.
      Throws:
      UnsupportedOperationException
    • nextBytes

      public void nextBytes(byte[] byteArray)
      Unsupported in 2.0.
      Overrides:
      nextBytes in class Random
      Parameters:
      byteArray - ignored
      Throws:
      UnsupportedOperationException
    • nextInt

      public int nextInt()

      Returns the next pseudorandom, uniformly distributed int value from the Math.random() sequence.

      Identical to nextInt(Integer.MAX_VALUE)

      N.B. All values are >= 0.

      Overrides:
      nextInt in class Random
      Returns:
      the random int
    • nextInt

      public int nextInt(int n)

      Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), from the Math.random() sequence.

      Overrides:
      nextInt in class Random
      Parameters:
      n - the specified exclusive max-value
      Returns:
      the random int
      Throws:
      IllegalArgumentException - when n <= 0
    • nextLong

      public long nextLong()

      Returns the next pseudorandom, uniformly distributed long value from the Math.random() sequence.

      Identical to nextLong(Long.MAX_VALUE)

      N.B. All values are >= 0.

      Overrides:
      nextLong in class Random
      Returns:
      the random long
    • nextLong

      public static long nextLong(long n)

      Returns a pseudorandom, uniformly distributed long value between 0 (inclusive) and the specified value (exclusive), from the Math.random() sequence.

      Parameters:
      n - the specified exclusive max-value
      Returns:
      the random long
      Throws:
      IllegalArgumentException - when n <= 0
    • nextBoolean

      public boolean nextBoolean()

      Returns the next pseudorandom, uniformly distributed boolean value from the Math.random() sequence.

      Overrides:
      nextBoolean in class Random
      Returns:
      the random boolean
    • nextFloat

      public float nextFloat()

      Returns the next pseudorandom, uniformly distributed float value between 0.0 and 1.0 from the Math.random() sequence.

      Overrides:
      nextFloat in class Random
      Returns:
      the random float
    • nextDouble

      public double nextDouble()

      Synonymous to the Math.random() call.

      Overrides:
      nextDouble in class Random
      Returns:
      the random double
    • next63bits

      private static long next63bits()
      Get the next unsigned random long
      Returns:
      unsigned random long
    • bitsRequired

      private static int bitsRequired(long num)
      Count the number of bits required to represent a long number.
      Parameters:
      num - long number
      Returns:
      number of bits required