# Java: Generating a random number of a certain length

To generate a random number with, for example 5 digits, you can do:

```
int n = 10000 + new Random().nextInt(90000);
// 10000 ≤ n ≤ 99999
```

Since the upper bound given to `nextInt`

is exclusive, the maximum is indeed 99999.

## Generalized version

```
// Generates a random int with n digits
public static int generateRandomDigits(int n) {
int m = (int) Math.pow(10, n - 1);
return m + new Random().nextInt(9 * m);
}
```

**Warning:** The above method breaks for *n* > 9, since 10^{9} is the largest power of 10 that an int can store.

## More than 9 digits

You can adapt the above method to work with `long`

. This would get you up to 18 digits.

Alternatively you can work with strings. See this article: Generating a random String (password, booking reference, etc). The resulting string can be converted to a `BigDecimal`

if needed.

## Comments

Be the first to comment!