Hola, tengo una duda con la solución de uno de los ejercicios resueltos de la unidad CU00907C.
En el ejercicio piden esto:
"Crear el código de un programa en el que se declaran tres variables tipo int a, b y c, cuyo valor se muestra en pantalla y debe estar comprendido entre cero y 100, utilizando el método nextInt de la clase Random."
Este es el codigo de la solución:
/* Ejemplo uso clase Random() – aprenderaprogramar.com */
import java.util.Random;
public class Programa {
public static void main(String arg[]) {
int a, b, c;
Random rnd = new Random();
a = rnd.nextInt(101);
b = rnd.nextInt(101);
c = rnd.nextInt(101);
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
Mi duda es, en la unidad 906C se dice que si se necesitan números aleatorios dentro de un rango hay que aplicar la formula:
"(int) (rnd.nextDouble() * cantidad_números_rango + término_inicial_rango)"
El casting con el int, en este caso no seria necesario...
Segun esto, yo el codigo que habria escrito es:
import java.util.Random;
public class Programa {
public static void main(String arg[]) {
int a, b, c;
Random rnd = new Random();
a = rnd.nextInt()*101;
b = rnd.nextInt()*101;
c = rnd.nextInt()*101;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
Pero con este codigo, los numeros generados son positivos o negativos y fuera del rango [0-100]...¿Por qué?
¿Porque se utiliza en la solución oficial el total de números del rango como parametro del nexInt()?
Muchas gracias por las respuestas.