04/06/2009, 16:08
|
| | Fecha de Ingreso: junio-2009 Ubicación: Bucaramanga, Santander.
Mensajes: 2
Antigüedad: 15 años, 5 meses Puntos: 0 | |
Respuesta: Rellenar array con numeros aleatorios y sin repetir /**
* Retorna un vector de enteros entre a y b (inclusive), a < b.
*/
public static int[] getSecuenciaAleatoria(int a, int b)
{
//El generador de números aleatorios.
java.util.Random rnd = new java.util.Random();
// El tamaño del vector.
int n = b - a + 1;
// Un ArrayList que será llenado ordenadamente con valores de a hasta b
java.util.ArrayList<Integer> v = new java.util.ArrayList<Integer>();
for(int i=0; i < n; ++i)
{
v.add(a+i);
}
//La secuencia a retornar.
int[] s = new int[n];
//Un temporal
int t;
//Se llena la secuencia tomando un valor aleatorio del vector v ordenado.
// Note que t es el índice del valor tomado desde v.
//El valor tomado se elimina luego se asignarselo a la secuencia.
for(int i=0; i < n; i++)
{
t = rnd.nextInt(v.size());
s[i] = v.get(t);
v.remove(t);
}
//Chao, nos vemos.
return s;
}
~~~
Desde main: int[] s = getSecuenciaAleatoria(1,10); |