Suscribirse al Feed
31Jul

Aclaración: Generar números aleatorios en Java con la clase Random

Antes que nada, veamos un pequeño ejemplo del uso de la clase Random, para ver su funcionamiento básico:


import java.util.*;
public class NumerosAleatorios
{
public static void main(String args[])
{
Random r=new Random();
r.setSeed(123456789);
System.out.println(r.nextInt(1000));
}
}

Como puedes observar, después de crear el objeto Random, es necesario utilizar el método setSeed(long) para establecer la semilla a partir de la cual se generarán números aleatorios (pseudo-aleatorios)... fíjate como le pasamos un número(que puede ser cualquiera, en formato long logicamente [obviando o no el sufijo L]), que representará la semilla.

Lo primero que es necesario entender, es que con la clase Random se generan números pseudo-aleatorios, por tal motivo siempre que corras el programa te va a salir exactamente el mismo número aleatorio o la misma secuencia (a menos de que se cambie la semilla). Esto se puede observar en el propio método setSeed:


synchronized public void setSeed(long seed) {
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
haveNextNextGaussian = false;
}

Entonces... ¿cuál es la solución para generar números realmente aleatorios con la clase Random? El método más sencillo para hacer esto, es insertar un valor en la semilla (en el método setSeed) que cambie cada vez que se ejecute el programa, y el más adecuado es la hora. Por obvios motivos, cada vez que ejecutas un programa la hora y fecha ha cambiado, entonces podemos usar nuestro programa de la siguiente forma:

import java.util.*;
public class aleatorio
{
public static void main(String args[])
{
Random r;
r=new Random();
r.setSeed(new Date().getTime());
System.out.println(r.nextInt(1000));
}
}

De ésta manera la semilla cambiará cada vez que ejecutemos el programa.

Etiquetas:

1 Comentario para “Aclaración: Generar números aleatorios en Java con la clase Random”

  1. a gravatar

    christian dice:  


    me puedes ayudar con un codigo en java que de 3 archivos txt tome datos aleatorios de cada uno por ejemplo en el primer archivo txt tenga una lista de nombres y q de ahi escoja 1 solo nobre y en el otro archivo txt tenga un listado de apellidos y que tome un apellido y asi sucesivamente me pudees ayudar ojala puedas ayudarme te dejo mi correo gracias chris_toty@hotmail.com

 

 

Antes de comentar... recuerda que no hago tareas

Te invito a subscribirte al feed RSS. ¿No sabes que es un lector de Feeds?

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS