Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Rocio76 en 24 de Septiembre 2019, 10:13

Título: genererar numeros con Math.random entre dos valores o en rango determinado Java
Publicado por: Rocio76 en 24 de Septiembre 2019, 10:13
Hola, mi pregunta es: ¿cómo se genera un numero aleatorio entre -8 y 0 , cero no inclusive, y entre -10 y 3 , -10 no inclusive, y entre 2 y 3 , 2 no inclusive?

Yo tengo esto pero no me sale el numero aleatorio negativo, ¿eso como se hace?

//genero un aleatorio entre 3 y -10 para poder hacer el ejecicio
int rango;

//(int)Math.random()*(num_maximo-num_minimo)-min
        b=(int)(Math.random()*(3-10)+10;
     
        String resul;
        //Entre -8 y 0, 0 no incluido
        r=(b<0)?"-8 y 0":" -8 y 0";
        System.out.println(r);

        //Entre -10 y 3,  -10 no incluidos
        r=(b<-9 && b<3)?"-10 y 3":"-10 y 3";
        System.out.println(r);

        //Entre 2 y 3, 2 no incluido
        r=(b<3)?"2 y 3":" 4 y 5";
        System.out.println(r);
       
Título: Re:genererar numeros con Math.random
Publicado por: Kabuto en 24 de Septiembre 2019, 16:12
Hola.

Aquí te dejo un método para generar aleatorios entre dos valores, más un método main() para ponerlo a prueba.
El método recibe dos parámetros:
desde, valor inicial que queda excluido.
hasta, valor final que queda incluido.

Los valores han de pasarse en orden numérico, es decir, si un valor es negativo y el otro positivo, el negativo va primero (en el desde).

Código: [Seleccionar]
public class RandomNeg {

static int generaNumeros(int desde, int hasta) {
return (int)(Math.random()*(hasta-desde+1)+desde);
}

public static void main(String[] args) {
System.out.println("Generando 30 números desde -8 hasta 0...");
for (int i = 0; i < 30; i++)
System.out.println(generaNumeros(-8, 0));

System.out.println("\n----------------------------\n");

System.out.println("Generando 30 números desde -10 hasta 3...");
for (int i = 0; i < 30; i++)
System.out.println(generaNumeros(-10, 3));
}
}