Package org.apache.commons.lang.math

# Class JVMRandom

java.lang.Object
java.util.Random
org.apache.commons.lang.math.JVMRandom

All Implemented Interfaces:
  `Serializable`, `RandomGenerator`

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:
  - Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from interface java.util.random.RandomGenerator

`RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator`

## Constructor Summary

Constructors
Constructor
Description
`JVMRandom()`
Constructs a new instance.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`nextBoolean()`
Returns the next pseudorandom, uniformly distributed boolean value from the Math.random() sequence.
`void`
`nextBytes(byte[] byteArray)`
Unsupported in 2.0.
`double`
`nextDouble()`
Synonymous to the Math.random() call.
`float`
`nextFloat()`
Returns the next pseudorandom, uniformly distributed float value between `0.0` and `1.0` from the Math.random() sequence.
`double`
`nextGaussian()`
Unsupported in 2.0.
`int`
`nextInt()`
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`
`nextLong()`
Returns the next pseudorandom, uniformly distributed long value from the Math.random() sequence.
`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, from, 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`

### Methods inherited from interface java.util.random.RandomGenerator

`isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong`

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

Specified by:
  `nextGaussian` in interface `RandomGenerator`
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.

Specified by:
  `nextBytes` in interface `RandomGenerator`
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.

Specified by:
  `nextInt` in interface `RandomGenerator`
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.

Specified by:
  `nextInt` in interface `RandomGenerator`
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.

Specified by:
  `nextLong` in interface `RandomGenerator`
Overrides:
  `nextLong` in class `Random`
Returns:
  the random long

### nextLong

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

Specified by:
  `nextBoolean` in interface `RandomGenerator`
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.

Specified by:
  `nextFloat` in interface `RandomGenerator`
Overrides:
  `nextFloat` in class `Random`
Returns:
  the random float

### nextDouble

public double nextDouble()

Synonymous to the Math.random() call.

Specified by:
  `nextDouble` in interface `RandomGenerator`
Overrides:
  `nextDouble` in class `Random`
Returns:
  the random double