Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Java
Expertise: Beginner
Jul 30, 1999

Random Integers Over an Integer Interval

The java.util.Random class has a public int nextInt() method that returns a randomly selected integer, but there is no innate method in that class to create a random number over an integer interval, say [x,y].
However, you can use the public double nextDouble() method of the Random class to obtain a random double between 0.0 and 1.0, and then project the position of the obtained double from the [0.0, 1.0] interval to the interval [x,y]. The following code shows you how:

 
public static int getIntRandomOnRange(int lower, int upper) 
{    
    //obtain the number of values in your interval 
    int range = (upper - lower) + 1;
    
    Random aRandom = new Random();
  
    // get a random double between 0.0 and 1.0
    double aDouble = aRandom .nextDouble();
    
    // multiply by the range of your interval
    aDouble *= range;
    
    // add the smallest integer value of your interval
    aDouble += lower;

    //drop the decimal value
    aDouble = Math.floor(aDouble);

    // account for the case adding one may send aDouble above you interval
    if (aDouble > upper) aDouble = upper;
    
    // cast aDouble into an int and return
    int anInt = (int)aDouble;

    return anInt;
}

Behrouz Fallahi
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date