Package java.util

Class Random

  • All Implemented Interfaces:
    Serializable, Modified

    public class Random
    extends Object
    implements Serializable, Modified
    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.

    See Also:
    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

      All Methods Instance Methods Concrete Methods 
      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.
    • Constructor Detail

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

        Parameters:
        seed - Seed value.
    • Method Detail

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

        Parameters:
        bits - Number of bits.
        Returns:
        Random value.
      • nextBoolean

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

        public void nextBytes​(byte[] buf)
        Fills buf with random bytes.
        Parameters:
        buf - Buffer to fill.
      • nextDouble

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

        public float nextFloat()
        Returns a pseudo-random uniformly distributed float in the half-open range [0.0, 1.0).
        Returns:
        Random value.
      • 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.
        Returns:
        Random value.
      • nextInt

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

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

        public long nextLong()
        Returns a pseudo-random uniformly distributed long.
        Returns:
        Random value.
      • 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.
        Parameters:
        seed - Seed value.