Java.util.Random class in Java
Last Updated :
07 May, 2019
Improve
Random class is used to generate pseudo-random numbers in java. An instance of this class is thread-safe. The instance of this class is however cryptographically insecure. This class provides various method calls to generate different random data types such as float, double, int.
Constructors:
- Random(): Creates a new random number generator
- Random(long seed): Creates a new random number generator using a single long seed
Declaration:
public class Random extends Object implements Serializable
Methods:
- java.util.Random.doubles(): Returns an effectively unlimited stream of pseudo random double values, each between zero (inclusive) and one (exclusive)
Syntax:public DoubleStream doubles() Returns: a stream of pseudorandom double values
- java.util.Random.ints(): Returns an effectively unlimited stream of pseudo random int values
Syntax:public IntStream ints() Returns: a stream of pseudorandom int values
- java.util.Random.longs(): Returns an effectively unlimited stream of pseudo random long values
Syntax:public LongStream longs() Returns: a stream of pseudorandom long values
- next(int bits): java.util.Random.next(int bits) Generates the next pseudo random number
Syntax:protected int next(int bits) Parameters: bits - random bits Returns: the next pseudo random value from this random number generator's sequence
- java.util.Random.nextBoolean(): Returns the next pseudo random, uniformly distributed boolean value from this random number generator’s sequence
Syntax:public boolean nextBoolean() Returns: the next pseudorandom, uniformly distributed boolean value from this random number generator's sequence
- java.util.Random.nextBytes(byte[] bytes) :Generates random bytes and places them into a user-supplied byte array
Syntax:public void nextBytes(byte[] bytes) Parameters: bytes - the byte array to fill with random bytes Throws: NullPointerException - if the byte array is null
- java.util.Random.nextDouble(): Returns the next pseudo random, uniformly distributed double value between 0.0 and 1.0 from this random number generator’s sequence
Syntax:public double nextDouble() Returns: the next pseudo random, uniformly distributed double value between 0.0 and 1.0 from this random number generator's sequence
- java.util.Random.nextFloat(): Returns the next pseudo random, uniformly distributed float value between 0.0 and 1.0 from this random number generator’s sequence
Syntax:public float nextFloat() Returns: the next pseudorandom, uniformly distributed float value between 0.0 and 1.0 from this random number generator's sequence
- java.util.Random.nextGaussian(): Returns the next pseudo random, Gaussian (“normally”) distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator’s sequence
Syntax:public double nextGaussian() Returns: the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence
- java.util.Random.nextInt(): Returns the next pseudorandom, uniformly distributed int value from this random number generator’s sequence
Syntax:public int nextInt() Returns: the next pseudorandom, uniformly distributed int value from this random number generator's sequence
- java.util.Random.nextInt(int bound): Returns a pseudo random, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator’s sequence
Syntax:public int nextInt(int bound) Parameters: bound - the upper bound (exclusive). Must be positive. Returns: the next pseudorandom, uniformly distributed int value between zero (inclusive) and bound (exclusive) from this random number generator's sequence Throws: IllegalArgumentException - if bound is not positive
- java.util.Random.nextLong(): Returns the next pseudorandom, uniformly distributed long value from this random number generator’s sequence
Syntax:public long nextLong() Returns: the next pseudorandom, uniformly distributed long value from this random number generator's sequence
- java.util.Random.setSeed(long seed): Sets the seed of this random number generator using a single long seed
Syntax:public void setSeed(long seed) Parameters: seed - the initial seed
Methods inherited from class java.lang.Object
- clone
- equals
- finalize
- getClass
- hashCode
- notify
- notifyAll
- toString
- wait
Java program to demonstrate usage of Random class
// Java program to demonstrate // method calls of Random class import java.util.Random; public class Test { public static void main(String[] args) { Random random = new Random(); System.out.println(random.nextInt( 10 )); System.out.println(random.nextBoolean()); System.out.println(random.nextDouble()); System.out.println(random.nextFloat()); System.out.println(random.nextGaussian()); byte [] bytes = new byte [ 10 ]; random.nextBytes(bytes); System.out.printf( "[" ); for ( int i = 0 ; i< bytes.length; i++) { System.out.printf( "%d " , bytes[i]); } System.out.printf( "]\n" ); System.out.println(random.nextLong()); System.out.println(random.nextInt()); long seed = 95 ; random.setSeed(seed); // Note: Running any of the code lines below // will keep the program running as each of the // methods below produce an unlimited random // values of the corresponding type /* System.out.println("Sum of all the elements in the IntStream returned = " + random.ints().count()); System.out.println("Count of all the elements in the DoubleStream returned = " + random.doubles().count()); System.out.println("Count of all the elements in the LongStream returned = " + random.longs().count()); */ } } |
Output:
4 true 0.19674934340402916 0.7372021 1.4877581394085997 [-44 75 68 89 81 -72 -1 -66 -64 117 ] 158739962004803677 -1344764816
Reference: