How do I generate random integers within a specific range in Java?

asked17 years ago
last updated3 years ago
viewed5m times
Up Vote4kDown Vote

How do I generate a random int value in a specific range? The following methods have bugs related to integer overflow:

randomNum = minimum + (int)(Math.random() * maximum);
// Bug: `randomNum` can be bigger than `maximum`.
Random rn = new Random();
int n = maximum - minimum + 1;
int i = rn.nextInt() % n;
randomNum =  minimum + i;
// Bug: `randomNum` can be smaller than `minimum`.