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:
Java
Output:
- Random(): Creates a new random number generator
- Random(long seed): Creates a new random number generator using a single long seed
public class Random extends Object implements SerializableMethods:
- 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());
*/
}
}
4 true 0.19674934340402916 0.7372021 1.4877581394085997 [-44 75 68 89 81 -72 -1 -66 -64 117 ] 158739962004803677 -1344764816Reference: