Random Integers Over an Integer Interval

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;}


Share the Post: