Random number generator in java

Let’s learn random number generator in java.

Random number generator in java

How to generate random numbers in java is one of the common interview question.

Let’s learn how to generate random numbers in java using some built in methods and classes.

Math.random() method in java

random function in java returns pseudo random double greater than or equal to 0.0 and less than 1.0.

Math.random() method uses Random class internally. Let’s see an example on Math.random() method in java.

// java random number
public class RandomMethodExample
   public static void main(String[] args)
      // here we are generating random doubles 



java.util.random example

In the below java program we are creating random class java to create random numbers.

Then instance methods of Random class namely nextint(), nextFloat(), nextBoolean() methods etc., are invoked.

import java.util.Random;
public class JavaRandomClass
   public static void main(String[] args)
      Random random = new Random();
      // random integers in range 0 to 999 
      int randInt1 = random.nextInt(1000); 
      int randInt2 = random.nextInt(1000);
      // printing random integers
      System.out.println("Random Integers: " + randInt1); 
      System.out.println("Random Integers: " + randInt2);
      // here we are generating Random doubles
      double randDou1 = random.nextDouble(); 
      double randDou2 = random.nextDouble();
      // printing random doubles
      System.out.println("Random Doubles: " + randDou1); 
      System.out.println("Random Doubles: " + randDou2);


Random Integers: 42
Random Integers: 30
Random Doubles: 0.42230252771804866
Random Doubles: 0.9215482578893138


ThreadLocalRandom class was introduced in java since 1.7.

Now let’s see how to generate random numbers in java of data type boolean, double and integer.

import java.util.concurrent.ThreadLocalRandom;
public class ThreadLocalRandomDemo
   public static void main(String[] args)
      // generating random integers between 0 to 999
      int randInt1 = ThreadLocalRandom.current().nextInt();
      // display random integers
      System.out.println("Random Integer: " + randInt1);
      // generating random doubles
      double randDou1 = ThreadLocalRandom.current().nextDouble();
      // display random doubles
      System.out.println("Random Double: " + randDou1);
      // generating random booleans
      boolean randBool1 = ThreadLocalRandom.current().nextBoolean();
      // display random booleans
      System.out.println("Random Boolean: " + randBool1);


Random number integer: -1724832069

Random number double: 0.3748088566976404

Random boolean: false

Also read – abstraction in java