Related Articles
Generating random numbers in Java
• Difficulty Level : Easy
• Last Updated : 26 Oct, 2016

Java provides three ways to generate random numbers using some built-in methods and classes as listed below:

• java.util.Random class
• Math.random method : Can Generate Random Numbers of double type.

1) java.util.Random
• For using this class to generate random numbers, we have to first create an instance of this class and then invoke methods such as nextInt(), nextDouble(), nextLong() etc using that instance.
• We can generate random numbers of types integers, float, double, long, booleans using this class.
• We can pass arguments to the methods for placing an upper bound on the range of the numbers to be generated. For example, nextInt(6) will generate numbers in the range 0 to 5 both inclusive.
 `// A Java program to demonstrate random number generation``// using java.util.Random;``import` `java.util.Random;`` ` `public` `class` `generateRandom{`` ` `    ``public` `static` `void` `main(String args[])``    ``{``        ``// create instance of Random class``        ``Random rand = ``new` `Random();`` ` `        ``// Generate random integers in range 0 to 999``        ``int` `rand_int1 = rand.nextInt(``1000``);``        ``int` `rand_int2 = rand.nextInt(``1000``);`` ` `        ``// Print random integers``        ``System.out.println(``"Random Integers: "``+rand_int1);``        ``System.out.println(``"Random Integers: "``+rand_int2);`` ` `        ``// Generate Random doubles``        ``double` `rand_dub1 = rand.nextDouble();``        ``double` `rand_dub2 = rand.nextDouble();`` ` `        ``// Print random doubles``        ``System.out.println(``"Random Doubles: "``+rand_dub1);``        ``System.out.println(``"Random Doubles: "``+rand_dub2);``    ``}``}`

Output:

```Random Integers: 547
Random Integers: 126
Random Doubles: 0.8369779739988428
Random Doubles: 0.5497554388209912
```

2) Math.random()

The class Math contains various methods for performing various numeric operations such as, calculating exponentiation, logarithms etc. One of these methods is random(), this method returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. The returned values are chosen pseudorandomly. This method can only generate random numbers of type Doubles. Below program explains how to use this method:
 `// Java program to demonstrate working of ``// Math.random() to generate random numbers``import` `java.util.*;`` ` `public` `class` `generateRandom``{``    ``public` `static` `void` `main(String args[])``    ``{``        ``// Generating random doubles``        ``System.out.println(``"Random doubles: "` `+ Math.random());``        ``System.out.println(``"Random doubles: "` `+ Math.random());``    ``}``}`

Output:

```Random doubles: 0.13077348615666562
Random doubles: 0.09247016928442775
```

This class is introduced in java 1.7 to generate random numbers of type integers, doubles, booleans etc. Below program explains how to use this class to generate random numbers:
 `// Java program to demonstrate working of ThreadLocalRandom``// to generate random numbers.``import` `java.util.concurrent.ThreadLocalRandom;`` ` `public` `class` `generateRandom``{``    ``public` `static` `void` `main(String args[])``    ``{``        ``// Generate random integers in range 0 to 999``        ``int` `rand_int1 = ThreadLocalRandom.current().nextInt();``        ``int` `rand_int2 = ThreadLocalRandom.current().nextInt();`` ` `        ``// Print random integers``        ``System.out.println(``"Random Integers: "` `+ rand_int1);``        ``System.out.println(``"Random Integers: "` `+ rand_int2);`` ` `        ``// Generate Random doubles``        ``double` `rand_dub1 = ThreadLocalRandom.current().nextDouble();``        ``double` `rand_dub2 = ThreadLocalRandom.current().nextDouble();`` ` `        ``// Print random doubles``        ``System.out.println(``"Random Doubles: "` `+ rand_dub1);``        ``System.out.println(``"Random Doubles: "` `+ rand_dub2);`` ` `        ``// Generate random booleans``        ``boolean` `rand_bool1 = ThreadLocalRandom.current().nextBoolean();``        ``boolean` `rand_bool2 = ThreadLocalRandom.current().nextBoolean();`` ` `        ``// Print random Booleans``        ``System.out.println(``"Random Booleans: "` `+ rand_bool1);``        ``System.out.println(``"Random Booleans: "` `+ rand_bool2);``    ``}``}`

Output:

```Random Integers: 536953314
Random Integers: 25905330
Random Doubles: 0.7504989954390163
Random Doubles: 0.7658597196204409
Random Booleans: false
Random Booleans: true
```

References:
https://docs.oracle.com

This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.