programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Paradigms IDEs Build Tools Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# Random numbers

Olliver Lim Kam Sian
Greenhorn
Posts: 12
Hello everyone,i'm having problem to generate random numbers within a certain range.I am using the following code:

computersNumber = (int)(100 * Math.random()) + 1;

The prob with this code is that it returns an integer between 1 and 100.
I would like one that generate within a range for example 50 and 60.

Hope to get some help.
Thank you for considering my problem.
cheers

Olliver

marc weber
Sheriff
Posts: 11343
Originally posted by Olliver Lim Kam Sian:
...I would like one that generate within a range for example 50 and 60...

Welcome to JavaRanch!

As you know, Math.random() returns a double between 0.0 and 1.0 (including the lower boundary 0.0, but not the upper 1.0). So multiplying this by an int x gives you a double between 0.0 and x. Now, if you want to shift this range up or down, just add or subtract.

You're already doing this by adding 1 in your example, to shift the range from 0-99 up by 1 to 1-100. So if you want numbers between 50 and 60 (let's say including 50 but not 60), you could use (Math.random() * 10) to get a double between 0.0 and 10.0, then add 50 to shift this to 50.0 and 60.0. That is...

(int)(Math.random() * 10) + 50)

Peter Chase
Ranch Hand
Posts: 1970
You could use java.util.Random.nextInt(max). Saves you from worrying about whether you got the rounding from double/float to int correct.

 It is sorta covered in the JavaRanch Style Guide.