Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Norlak en 12 Diciembre 2011, 12:33 PM

Título: Crear numeros aleatorios con la clase Math.(solucionado)
Publicado por: Norlak en 12 Diciembre 2011, 12:33 PM
Buenas a todos mirad tengo un problema el cual nose porque no funciona, tengo que generar un numero entre 10 y 20 con la funcion Math.

Lo que tengo escrito es esto:
Citarpublic class Principal {

   /**
    * @param args
    */
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      double z=0;
      
      do{
         z=Math.round((Math.random()*100));
         //System.out.println(z);
      }
//      
      while (z<20.0 && z>10.0);
      System.out.println(z);

   }

}

Alguien me puede explicar porque no se cumple mi condicion?, si me genera el numero pero uno cualquiera entre 0.0 hasta 100, si yo en el while le especifico las condiciones.

A alguien se le ocurre que pasa? Gracias de todas formas

PD:Felices Fiestas a todos!
Título: Re: Crear numeros aleatorios con la clase Math.
Publicado por: Proteus1989 en 12 Diciembre 2011, 12:48 PM
Mmmm no lo hagas así.

Mejor haz esto:

Math.random()*10+10

Con eso TODOS los números generados estarán entre 10 y 19.9 periódico
Título: Re: Crear numeros aleatorios con la clase Math.
Publicado por: Norlak en 12 Diciembre 2011, 15:58 PM
Cita de: Proteus1989 en 12 Diciembre 2011, 12:48 PM
Mmmm no lo hagas así.

Mejor haz esto:

Math.random()*10+10

Con eso TODOS los números generados estarán entre 10 y 19.9 periódico

Gracias por contestar tan rapido amigo, esa manera ya la he hecho, pero quiero saber porque falla de esta otra gracias de todos modos!
Título: Re: Crear numeros aleatorios con la clase Math.
Publicado por: Proteus1989 en 12 Diciembre 2011, 17:12 PM
Porque le tienes dicho que mientras que los valores estén entre 10 y 20 NO salga xD
Solo tendrías que cambiar el < por >= y el > por <=
Título: Re: Crear numeros aleatorios con la clase Math.
Publicado por: Norlak en 12 Diciembre 2011, 17:18 PM
Cita de: Proteus1989 en 12 Diciembre 2011, 17:12 PM
Porque le tienes dicho que mientras que los valores estén entre 10 y 20 NO salga xD
Solo tendrías que cambiar el < por >= y el > por <=

Es decir cambiar
Citarwhile (z<20.0 && z>10.0);

Por

Citar
     
      while (z>=20.0 && z<=10.0);

Gracias por tu respuesta nuevamente, pero de esta manera sigue sin funcionarme ya que me sigue dando numeros aleatorios pero de cualquier rango, gracias.
Título: Re: Crear numeros aleatorios con la clase Math.
Publicado por: Proteus1989 en 12 Diciembre 2011, 18:53 PM

while (z>20.0 || z<10.0);


Los iguales me acabo de fijar que excluían al 10 y al 20.
Título: Re: Crear numeros aleatorios con la clase Math.
Publicado por: Norlak en 12 Diciembre 2011, 19:02 PM
Cita de: Proteus1989 en 12 Diciembre 2011, 18:53 PM

while (z>20.0 || z<10.0);


Los iguales me acabo de fijar que excluían al 10 y al 20.

Eres mi idolo XD, aver pero una aclaracion el "||" no significa , condicion 1 o condicion 2,

entonces no entiendo porque entra en el while XD bueno seguire buscando gracias!
Título: Re: Crear numeros aleatorios con la clase Math.
Publicado por: Proteus1989 en 12 Diciembre 2011, 19:10 PM
Tomaté el while como un mientras verdad hago
                                     while  condicion  do
Con el || (o) dará vueltas mientras una de esas condiciones sea cierta. Si es mayor que 20 ó menor que 10 NO me vale. Tienen que ser las dos condiciones falsas (es decir, que esté comprendido entre 10 y 20) para que se cumpla.


Se que no me he explicado bien... pero al menos lo he intentado xD
Título: Re: Crear numeros aleatorios con la clase Math.(solucionado)
Publicado por: 1mpuls0 en 14 Diciembre 2011, 03:55 AM
Otra solución sin necesidad de utilizar mucha memoria.

Código (java) [Seleccionar]

/**
* @(#)NumerosAleatorios.java
*
*
* @author Darhius929
* @version 1.00 2011/12/13
*/
public class NumerosAleatorios {

public static void main(String args[]){
new NumerosAleatorios();
}

    public NumerosAleatorios() {
   
    double limiteUno=10.0;
    double limiteDos=20.0;
    double limiteInferior=0;
    double limiteSuperior=0;
    int totalNumeros=2;
   
    if(limiteUno<limiteDos){
    limiteSuperior=limiteDos;
    limiteInferior=limiteUno;
    }else if(limiteUno>limiteDos){
    limiteSuperior=limiteUno;
    limiteInferior=limiteDos;
    }else{
    System.out.println("El limite inferior y superior no pueden ser iguales");
    System.exit(0);
    }
   
    for(int indice=0; indice<totalNumeros;indice++){
    double numeroAleatorio=limiteInferior + ( Math.random()* ( limiteSuperior - limiteInferior  ) );
    java.text.DecimalFormat df = new java.text.DecimalFormat("0.00");
    System.out.println("El numero generado aleatoriamente es "+df.format(numeroAleatorio));
    }
    }
}


Saludos.
Título: Re: Crear numeros aleatorios con la clase Math.(solucionado)
Publicado por: Norlak en 14 Diciembre 2011, 10:56 AM
Cita de: Darhius en 14 Diciembre 2011, 03:55 AM
Otra solución sin necesidad de utilizar mucha memoria.

Código (java) [Seleccionar]

/**
* @(#)NumerosAleatorios.java
*
*
* @author Darhius929
* @version 1.00 2011/12/13
*/
public class NumerosAleatorios {

public static void main(String args[]){
new NumerosAleatorios();
}

    public NumerosAleatorios() {
   
    double limiteUno=10.0;
    double limiteDos=20.0;
    double limiteInferior=0;
    double limiteSuperior=0;
    int totalNumeros=2;
   
    if(limiteUno<limiteDos){
    limiteSuperior=limiteDos;
    limiteInferior=limiteUno;
    }else if(limiteUno>limiteDos){
    limiteSuperior=limiteUno;
    limiteInferior=limiteDos;
    }else{
    System.out.println("El limite inferior y superior no pueden ser iguales");
    System.exit(0);
    }
   
    for(int indice=0; indice<totalNumeros;indice++){
    double numeroAleatorio=limiteInferior + ( Math.random()* ( limiteSuperior - limiteInferior  ) );
    java.text.DecimalFormat df = new java.text.DecimalFormat("0.00");
    System.out.println("El numero generado aleatoriamente es "+df.format(numeroAleatorio));
    }
    }
}


Saludos.

Gracias amigo!