Users Pricing

articles

home / developersection / articles / generate random numbers in java

Generate random numbers in Java

Devesh Kumar Singh 5483 16 Nov 2015 Updated 14 Dec 2017

There are two principal means of generating random (really pseudo-random) numbers:

  • The Random class generates random integers, doubles, and longs and so on, in various ranges.
  • The static method Math.random generates doubles between 0 (inclusive) and 1 (exclusive).
To generate random integers:
  • Do not use Math.random (it produces doubles, not integers)
  • Use the Random class to generate random integers between 0 and N.

To generate a series of random numbers as a unit, you need to use a single Random object - do not create a new Random object for each new random number.

1)      Using Random class: 

package randomnum;
import java.util.Random;
public class RandomNum {
public static void main(String[] args) {
System.out.println("Generating 10 numbers in between 1 and 100"); 
Random r = new Random();
for (int i = 1; i <= 10; ++i)
{
      int rno = r.nextInt(100);
      System.out.println("Generated : " + rno);
}
}
}

OUTPUT:

Generating 10 numbers in between 1 and 100

Generated : 45

Generated : 12

Generated : 1

Generated : 57

Generated : 24

Generated : 84

Generated : 88

Generated : 6

Generated : 93

Generated : 18

 

The java.util.Random class allows you to create objects that produce pseudo-random numbers with uniform or gaussian distributions according to a linear congruential formula with a 48-bit seed.

The nextInt(int n) method is used to get a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.

IllegalArgumentException -- This is thrown if n is not positive. 


2)      Using Math.random function: 

package randomno;

public class RandomNo {

   

public static void main(String[] args) {

System.out.println("Generating 10 numbers in between 1 and 100");

int min=1,max=100;

for(int i=1;i<=10;i++)

     {

            int rno = min + (int)(Math.random() * ((max - min) + 1));

            System.out.println(rno);

     }

}

}

 

OUTPUT:

Generating 10 numbers in between 1 and 100

87

95

45

42

19

74

42

10

71

17