Package java.util

Class Random

java.lang.Object
java.util.Random
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
SecureRandom, ThreadLocalRandom

public class Random
extends Object
implements Serializable
This class provides methods that return pseudo-random values.

It is dangerous to seed Random with the current time because that value is more predictable to an attacker than the default seed.

This class is thread-safe.

See Also:
SecureRandom, Serialized Form
  • Constructor Summary

    Constructors
    Constructor Description
    Random()
    Constructs a random generator with an initial state that is unlikely to be duplicated by a subsequent instantiation.
    Random​(long seed)
    Construct a random generator with the given seed as the initial state.
  • Method Summary

    Modifier and Type Method Description
    protected int next​(int bits)
    Returns a pseudo-random uniformly distributed int value of the number of bits specified by the argument bits as described by Donald E.
    boolean nextBoolean()
    Returns a pseudo-random uniformly distributed boolean.
    void nextBytes​(byte[] buf)
    Fills buf with random bytes.
    double nextDouble()
    Returns a pseudo-random uniformly distributed double in the half-open range [0.0, 1.0).
    float nextFloat()
    Returns a pseudo-random uniformly distributed float in the half-open range [0.0, 1.0).
    double nextGaussian()
    Returns a pseudo-random (approximately) normally distributed double with mean 0.0 and standard deviation 1.0.
    int nextInt()
    Returns a pseudo-random uniformly distributed int.
    int nextInt​(int n)
    Returns a pseudo-random uniformly distributed int in the half-open range [0, n).
    long nextLong()
    Returns a pseudo-random uniformly distributed long.
    void setSeed​(long seed)
    Modifies the seed using a linear congruential formula presented in The Art of Computer Programming, Volume 2, Section 3.2.1.

    Methods inherited from class java.lang.Object

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

    • Random

      public Random()
      Constructs a random generator with an initial state that is unlikely to be duplicated by a subsequent instantiation.

      The initial state (that is, the seed) is partially based on the current time of day in milliseconds.

    • Random

      public Random​(long seed)
      Construct a random generator with the given seed as the initial state. Equivalent to Random r = new Random(); r.setSeed(seed);.

      This constructor is mainly useful for predictability in tests. The default constructor is likely to provide better randomness.

  • Method Details

    • next

      protected int next​(int bits)
      Returns a pseudo-random uniformly distributed int value of the number of bits specified by the argument bits as described by Donald E. Knuth in The Art of Computer Programming, Volume 2: Seminumerical Algorithms, section 3.2.1.

      Most applications will want to use one of this class' convenience methods instead.

    • nextBoolean

      public boolean nextBoolean()
      Returns a pseudo-random uniformly distributed boolean.
    • nextBytes

      public void nextBytes​(byte[] buf)
      Fills buf with random bytes.
    • nextDouble

      public double nextDouble()
      Returns a pseudo-random uniformly distributed double in the half-open range [0.0, 1.0).
    • nextFloat

      public float nextFloat()
      Returns a pseudo-random uniformly distributed float in the half-open range [0.0, 1.0).
    • nextGaussian

      public double nextGaussian()
      Returns a pseudo-random (approximately) normally distributed double with mean 0.0 and standard deviation 1.0. This method uses the polar method of G. E. P. Box, M. E. Muller, and G. Marsaglia, as described by Donald E. Knuth in The Art of Computer Programming, Volume 2: Seminumerical Algorithms, section 3.4.1, subsection C, algorithm P.
    • nextInt

      public int nextInt()
      Returns a pseudo-random uniformly distributed int.
    • nextInt

      public int nextInt​(int n)
      Returns a pseudo-random uniformly distributed int in the half-open range [0, n).
    • nextLong

      public long nextLong()
      Returns a pseudo-random uniformly distributed long.
    • setSeed

      public void setSeed​(long seed)
      Modifies the seed using a linear congruential formula presented in The Art of Computer Programming, Volume 2, Section 3.2.1.