2010-02-09 21 views
11

¿Cómo se obtienen valores aleatorios Double entre 0.0 y 0.06 en Java?Obteniendo un número aleatorio entre 0 y 0.06 en Java?

+2

Esto no es tan fácil como parece. +1 –

+2

Cuando dice 'entre', ¿desea que se incluyan o excluyan los puntos finales como posibles valores de retorno? – AakashM

+1

Debe aclarar si lo que quiere son números en [0,0.06] o [0,0.06). El primero, donde el intervalo está cerrado (es decir, los puntos finales están incluidos) no es lo mismo que el último, donde nunca puede obtener 0.06 como valor. – uckelman

Respuesta

22

nextDouble() devuelve un número de coma flotante aleatorio uniformemente distribuido entre 0 y 1. Simplemente escalar el resultado de la siguiente manera:

Random generator = new Random(); 
double number = generator.nextDouble() * .06; 

Ver this documentation para más ejemplos de azar.

+2

También es posible que tenga que verificar que el número sea inferior a <0.06, las operaciones de punto flotante no son exactas [en el sentido de que siempre hay algún error/incertidumbre que se acumula sobre muchas operaciones de coma flotante]. – Fakrudeen

+0

También tenga cuidado con el uso de una nueva instancia de 'Random' para cada número que necesite. En ese sentido, la respuesta de uckelman a continuación es mejor ya que evita específicamente ese error común. – Joey

+0

@Fakrudeen, guau, de hecho. número = Math.min (número, 0.06); – Justin

7

Esto le dará un doble al azar en el intervalo [0,0.06):

double r = Math.random()*0.06; 
1

Basado en this java doc (aunque ver la condición de contorno):

new Random().nextDouble() * 0.06 
3

Para evitar la inexactitud de valores de coma flotante puede utilizar un cálculo doble/número entero que es más preciso (al menos en las plataformas x86/x64)

double d = Math.random() * 6/100; 
Cuestiones relacionadas