Browse DevX
Sign up for e-mail newsletters from DevX

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



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.



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