miércoles, 6 de octubre de 2010

Números aleatorios

Para crear un número aleatorio en Java (mejor dicho pseudoaletorio, ya que siendo purista, hay que matizar que la aleatoriedad como tal, no existe en la informática) lo mas sencillo es usar la siguiente sentencia de código:

double randomNumber = java.lang.Math.random();

Esto creará un double comprendido en el intervalo [0,1).
Si lo que interesa es crear un número comprendido dentro de otro rango, por ejemplo [a,b] entonces se puede usar una expresión del tipo:

randomNumber = (randomNumber +1) * (b-a) + a-2;

o lo que es lo mismo:

randomNumber = randomNumber * (b-a) + b - 2;

Aunque nunca se llegará realmente a conseguir el número b, si se conseguirán valores muy próximos. Este tipo de expresiones solían hacerse en programación C.
Java ofrece una forma alternativa de obtener un número real en el rango [0,1), esta forma es creando una instancia de la clase java.uti.Random:

java.util.Random r = new java.util.Random();
double randomNumber = r.nextDouble();

La principal ventaja de usar la case Random es que tiene unos cuantos métodos para generar números pseudoaletarios de distintos tipos. Entre estos métodos cabe destacar el constructor parametrizado de la clase y el método nextInt:

long seed = 1001;
java.util.Random r = new java.util.Random(seed);
int integer = r.nextInt(10);

El número 1001 (valor arbitrario de la variable seed) es la semilla del generador de números pseudoaleatorios. Esta semilla determinará la secuencia de números aleatorios a producir (solo para números enteros). El método nextInt generará números enteros comprendidos en el rango [0,9].

No hay comentarios:

Publicar un comentario