Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/09/2010, 01:47
peter_21
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 14 años
Puntos: 1
utilizacion del random en un arraList, sin contar un elemento

Hola,

el problema que tengo es sencillo.

Tengo 3 elementos en un arrayList, y quiero coger cada vez un elemento al azar, aunque el tercero sera el que quede "por huevos" jeje

Es decir...tenemos los elementos A, B Y C.

Quiero que en el primer random me coja uno, por ejemplo, el B.
Luego el siguiente random me lo haga entre A Y C y si coje el A, pues por ultimo me quedo con el C.

Al principio me parecia un problema sencillo pero al implementarlo como veis abajo, me surgia un problema.
"Copia" es el arrayList donde tengo los elementos, que es un copia del arraylist original "persona". Lo hago para poder manipular ese arrayList sin problemas.

Código:
Random rand = new Random();
int x = rand.nextInt(copia.size());
copia.remove(x);
int y = rand.nextInt(copia.size());
copia.remove(y);
int z = rand.nextInt(copia.size());

String uno_Nombre = persona.get(x).getNombre();
String dos_Nombre = persona.get(y).getNombre();
String tres_Nombre = persona.get(z).getNombre();
Claro, yo pensaba que con el remove, quitaba ese elemento, y si lo quito, pero el resto de desplaza hacia la izquierda. Es decir, si los elementos son A,B Y C.
En int x la primera vez me sale un 1(el tamaño de copia es 3, de 0 a 2). Ese 1 corresponde a B y cuando el get(x).getNombre(); me coge el B sin problemas.

Pero luego lo borro y el arraylist queda a pasar a A(posicion 0) y C(posicion 1) con lo cual, es muy probable que en int y, me salga otra vez el 1(50% de probabilidad). Y claro, al hacer get(y).getnombre(); pues me coge lo mismo que el get(x).

Como puedo hacer que el segundo random sea solo entre la posicion 0, y la 2, sin contar el que ya a sido seleccionado?