2012-01-29 24 views
7

Tengo una matriz de valores numéricos, y quiero seleccionar al azar un valor de esa matriz y luego insertarlo en una variable int.Seleccione un valor aleatorio de una matriz

No estoy seguro de qué código necesitará ver. Entonces,

Aquí está el bucle for que estoy usando para generar 13 números (1-13) e insertarlos en la matriz.

int clubsArray []; 
    clubsArray = new int [13]; 

    for(int i = 0; i < clubsArray.length; i++) { 

     clubsArray[i] = i +1; 

    } 

que funciona bien, pero ahora necesito seleccionar, por ejemplo, 2 valores aleatorios a partir de esa matriz (y luego insertarlo en una variable que se utilizará más adelante.

He mirado alrededor en muchos sitios web y he visto cosas como ArrayList<String> para insertar valores en una matriz y luego usar Random generator = new Random() para seleccionar el valor de la matriz y luego .remove() para eliminarlo de la matriz. Pero cuando lo he usado no lo hago 't trabajo.

+0

En realidad, no se "inserta" en una variable int, en lugar de "asignar" a :) –

+0

posible duplicado de [Cómo generar un número aleatorio con Java de la lista dada de números] (http://stackoverflow.com/questions/1247915/how-to-generate-a-random-number-with-java-from-given-list-of-numbers) – Mark

Respuesta

24

Sólo clubsArray[new Random().nextInt(clubsArray.length)] funcionaría

O para aleatorizar el orden de los elementos, use List<?> clubsList=Arrays.asList(clubsArray); Collections.shuffle(clubsList);.

+0

Gracias. Si tuviera que usar esto, ¿debería eliminarlo también de la matriz? (para evitar que se elijan duplicados en una etapa posterior) – Craig

+0

@Craig: Eliminar un elemento en una matriz es O (n), así que tal vez eso no es lo que quiere hacer. ¿Quizás quieras mezclar todo el conjunto primero? (como se usaría una baraja de cartas) [Esto] (http://stackoverflow.com/a/6127606/165544) es cómo hacerlo en C – danr

+0

Bueno, probablemente, o en su lugar compruebe si la matriz de salida ya lo tiene , y si es así, elige otro. –

Cuestiones relacionadas