## Generating a Random Number between 1 and 10 Java

### Question

I want to generate a number between 1 and 10 in Java.

Here is what I tried:

``````Random rn = new Random();
int answer = rn.nextInt(10) + 1;
``````

Is there a way to tell what to put in the parenthesis `()` when calling the nextInt method and what to add?

2015/05/27
1
175
5/27/2015 5:13:46 PM

As the documentation says, this method call returns "a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)". This means that you will get numbers from 0 to 9 in your case. So you've done everything correctly by adding one to that number.

Generally speaking, if you need to generate numbers from `min` to `max` (including both), you write

``````random.nextInt(max - min + 1) + min
``````
2013/12/05
249
12/5/2013 1:54:40 AM

The standard way to do this is as follows:

Provide:

• min Minimum value
• max Maximum value

and get in return a Integer between min and max, inclusive.

``````Random rand = new Random();

// nextInt as provided by Random is exclusive of the top value so you need to add 1

int randomNum = rand.nextInt((max - min) + 1) + min;
``````

As explained by Aurund, Random objects created within a short time of each other will tend to produce similar output, so it would be a good idea to keep the created Random object as a field, rather than in a method.

2018/04/03

This will work for generating a number 1 - 10. Make sure you import Random at the top of your code.

``````import java.util.Random;
``````

If you want to test it out try something like this.

``````Random rn = new Random();

for(int i =0; i < 100; i++)
{
int answer = rn.nextInt(10) + 1;