#

| Chapter 17 The java.util Package |

# Random

## Name

Random

## Synopsis

Class Name:

  `java.util.Random`

Superclass:

  `java.lang.Object`

Immediate Subclasses:

  None

Interfaces Implemented:

  `java.io.Serializable`

Availability:

  JDK 1.0 or later

## Description

The `Random` class is a pseudo-random number generator. Pseudo-random numbers are generated by starting with a seed value and then using an algorithm to generate a sequence of numbers that appear to be random. The `Random` class uses a 48-bit seed and a linear congruential algorithm to modify the seed. As a consequence of this implementation, two `Random` instances that are constructed with the same seed value generate exactly the same sequence of numbers.

The `Random` class provides methods that return pseudo-random values for various primitive Java types. The `Math.random()` method is easier to use if you do not need to fine-tune the generation of random numbers.

## Class Summary

    public class java.util.Random extends java.lang.Object
                 implements java.io.Serializable {
      // Constructors
      public Random();
      public Random(long seed);
      // Instance Methods
      public void nextBytes(byte[] bytes);             // New in 1.1
      public double nextDouble();
      public float nextFloat();
      public synchronized double nextGaussian();
      public int nextInt();
      public long nextLong();
      public synchronized void setSeed(long seed);
      // Protected Instance Methods
      protected synchronized int next(int bits);       // New in 1.1
    }

## Constructors

### Random

#### public Random()

Description

  This constructor creates a `Random` object with the current time as its seed value.

#### public Random(long seed)

Parameters

  `seed`

    The seed value to use.

Description

  This constructor creates a `Random` object with the given seed value.

## Instance Methods

### nextBytes

#### public void nextBytes(byte[] bytes)

Availability

  New as of JDK 1.1

Parameters

  `bytes`

    The byte array to fill.

Description

  This method fills the given array with pseudo-random byte values.

### nextDouble

#### public double nextDouble()

Returns

  The next pseudo-random `double` value.

Description

  This method returns the next pseudo-random, uniformly distributed `double` value. The value is between 0.0 and 1.0 inclusive.

### nextFloat

#### public float nextFloat()

Returns

  The next pseudo-random `float` value.

Description

  This method returns the next pseudo-random, uniformly distributed `float` value. The value is between 0.0 and 1.0 inclusive.

### nextGaussian

#### public synchronized double nextGaussian()

Returns

  The next pseudo-random `double` value.

Description

  This method returns the next pseudo-random, Gaussian distributed `double` value. The value has a mean of 0.0 and a standard deviation of 1.0 from the random number sequence. The value is between -1.0 and 1.0.

### nextInt

#### public int nextInt()

Returns

  The next pseudo-random `int` value.

Description

  This method returns the next pseudo-random, uniformly distributed `int` value.

### nextLong

#### public long nextLong()

Returns

  The next pseudo-random `long` value.

Description

  This method returns the next pseudo-random, uniformly distributed `long` value.

### setSeed

#### public synchronized void setSeed(long seed)

Parameters

  `seed`

    The new seed value.

Description

  This method sets this `Random` object's seed value to the given value.

## Protected Instance Methods

### next

#### protected synchronized int next(int bits)

Availability

  New as of JDK 1.1

Parameters

  `bits`

    The number of bits to generate.

Returns

  The specified number of pseudo-random bits.

Description

  This method generates the given number of bits and returns them as an integer value. A subclass of `Random` should override this method, as it is used by all of the other random-number generation methods in the class.

## Inherited Methods

Method | Inherited From | Method | Inherited From
--- | --- | --- | ---
`clone()` | `Object` | `equals(Object)` | `Object`
`finalize()` | `Object` | `getClass()` | `Object`
`hashCode()` | `Object` | `notify()` | `Object`
`notifyAll()` | `Object` | `toString()` | `Object`
`wait()` | `Object` | `wait(long)` | `Object`
`wait(long, int)` | `Object` |  |

## See Also

`Math`, `Serializable`

PropertyResourceBundle |  | ResourceBundle