sábado, 25 de abril de 2015

Java : Random

Hola lectores :

Programando (en java of corse ) para los puertos de una aplicación me he encontrado , que si quería iniciar la misma aplicación 2 veces con dos subinterfaces tenía problemas con los puertos de estas IP's , necesitaba que algo no me generara problemas como que el puerto ya estaba en uso.

La solución que me he encontrado ha sido usar la función Random y aquí es cuando yo os explico como se , de que trata esta función de oracle y como hacerla.

Random ¿Que es?

Pues es una función que genera números de forma pseudoaleatoria , para nuestras aplicaciones o necesidades.

¿Que quiere decir Pseudoaleatoria? 

Pues que coge el reloj interno del ordenador para generar dichos números , cosa que siempre que ejecutemos esa aplicación nos ejecutará los mismos números "aleatorios". Que nos sirve así , sin esa aleatoriedad tan necesaria en otras aplicaciones , por ejemplo en mi caso.

Pues ponemos el siguiente código :

int aux = 0;
Random r = new Random();
aux = r.nextInt(100);
System.out.println(aux);


Esto tendrá una salida de un número aleatorio entre 1 y 100  , por ejemplo

3 2 4 21 3

Nota : En este caso aunque no me costaba nada poner un for , se supone.

Pero si lo volvemos a ejecutar como ya hemos dicho con anterioridad dicho programa nos generará los mismos números , para solucionar eso :
int aux = 0;
try { // el try-catch viene con la función sleep
 Thread.sleep(1000); // Sleep que necesitamos para cambiar los números
} catch (InterruptedException e) {
   e.printStackTrace(); 
}
Random r = new Random(); // Instanciamos la funcion Random
aux = r.nextInt(100); // Genera los números aleatorios entre 1 a 100
System.out.println(aux); // Imprime los números

Esto nos imprimirá por pantalla cada vez que nosotros lo ejecutemos distintos números , porque le estamos haciendo un sleep , por consiguiente estamos cambiando la aleatoriedad así pudiendo tener números más aleatorios .

Para el caso de que queramos nosotros poner los límites de "aleatoriedad" tenemos que poner lo siguiente , solo cambiaríamos la siguiente linea :
aux = r.nextInt(max - min -1 ) + max;
Lógicamente como ya esta puesto en la línea se supone max como el valor máximo y min como el número mínimo.

Espero haberos ayudado .

No hay comentarios:

Publicar un comentario