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

Math.random() method returns pseudo random double greater than or equal to 0.0 and less than 1.0.

Also read – java program to delete vowels in a given string

Math.random() method uses Random class internally.

Let’s see an example on Math.random() method in java.

public class RandomMethodExample
{
   public static void main(String[] args)
   {
      // here we are generating random doubles 
      System.out.println(Math.random()); 
      System.out.println(Math.random());
   }
}


Output:

0.31834412935584566
0.40181643543705636


java.util.random example

In the below java program we are creating instance of class Random 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);
   }
}


Output:

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


java.util.concurrent.ThreadLocalRandom

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);
   }
}


Output:

Random number integer: -1724832069

Random number double: 0.3748088566976404

Random boolean: false