Genera un doble aleatorio en un rango

Tengo dos dobles como la siguiente

double min = 100; double max = 101; 

y con un generador aleatorio, necesito crear un valor doble entre el rango de mínimo y máximo.

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

pero aquí no hay nada donde podamos especificar el rango.

Para generar un valor aleatorio entre rangeMin y rangeMax :

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

Esta pregunta se hizo antes del lanzamiento de Java 7, pero ahora, hay otra forma posible de usar Java 7 (y superior) API:

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

nextDouble devolverá un valor doble pseudoaleatorio entre el mínimo (incluido) y el máximo (exclusivo). Los límites no son necesariamente int , y pueden ser double .

Utilizar esta:

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

EDITAR:

new Random().nextDouble() : genera al azar un número entre 0 y 1.

start : número de inicio, para desplazar el número “hacia la derecha”

end - start : intervalo. Aleatorio te da del 0% al 100% de este número, porque al azar te da un número de 0 a 1.


EDIT 2: Tks @daniel y @aaa bbb. Mi primera respuesta fue incorrecta.

 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 100th, You Can Modify This To Change How It Rounds. System.out.println(xrounded); // This Will Now Print Out The Rounded, Random Number. } } 

double var1 = LowerLimit + new Random (). nextDouble () * (UpperLimit – LowerLimit); System.out.println (“\ n \ nRandom doble en el rango es:” + var1);