Generate a random double in a range

I have two doubles like the following

double min = 100;
double max = 101;

and with a random generator, I need to create a double value between the range of min and max.

Random r = new Random();
r.nextDouble();

but there is nothing here where we can specify the range.


To generate a random value between rangeMin and rangeMax:

Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();

This question was asked before Java 7 release but now, there is another possible way using Java 7 (and above) API:

double random = ThreadLocalRandom.current().nextDouble(min, max);

nextDouble will return a pseudorandom double value between the minimum (inclusive) and the maximum (exclusive). The bounds are not necessarily int, and can be double.


Use this:

double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);

EDIT:

new Random().nextDouble(): randomly generates a number between 0 and 1.

start: start number, to shift number "to the right"

end - start: interval. Random gives you from 0% to 100% of this number, because random gives you a number from 0 to 1.


EDIT 2: Tks @daniel and @aaa bbb. My first answer was wrong.


import java.util.Random;

public class MyClass {
     public static void main(String args[]) {
          Double min = 0.0;  // Set To Your Desired Min Value
          Double max = 10.0; // Set To Your Desired Max Value
          double x = (Math.random() * ((max - min) + 1)) + min;   // This Will Create A Random Number Inbetween Your Min And Max.
          double xrounded = Math.round(x * 100.0) / 100.0;   // Creates Answer To The Nearest 100 th, You Can Modify This To Change How It Rounds.
          System.out.println(xrounded);    // This Will Now Print Out The Rounded, Random Number.
     }
}