2012-01-29 24 views
7

Ho una matrice di valori numerici e desidero selezionare a caso un valore da quella matrice e quindi inserirlo in una variabile int.Selezionare un valore casuale da una matrice

Non sono sicuro di quale codice è necessario vedere. Quindi,

Ecco il ciclo for che sto utilizzando per generare 13 numeri (1-13) e inserirli nell'array.

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

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

     clubsArray[i] = i +1; 

    } 

Che funziona bene, ma ora ho bisogno di selezionare, per esempio, 2 valori casuali da in tale matrice (e poi inserirlo in una variabile da utilizzare in seguito.

Ho guardato in giro su molti siti Web e ho visto cose come ArrayList<String> per inserire valori in una matrice e quindi utilizzare Random generator = new Random() per selezionare il valore dall'array e quindi .remove() per rimuoverlo dall'array. Ma quando mai ho usato che non

+0

in realtà non "inserisci" in una variabile int, piuttosto "assegna" a :) –

+0

possibile duplicato di [Come generare un numero casuale con Java da una data lista di numeri] (http://stackoverflow.com/questions/1247915/how-to-generate-a-random-number-with-java-from-given-list-of-numbers) – Mark

risposta

24

Solo clubsArray[new Random().nextInt(clubsArray.length)] funzionerebbe

Oppure per randomizzare l'ordine degli elementi, utilizzare List<?> clubsList=Arrays.asList(clubsArray); Collections.shuffle(clubsList);.

+0

Grazie. Se dovessi usare questo, dovrei quindi rimuoverlo anche dall'array? (per evitare che i duplicati vengano scelti in una fase successiva) – Craig

+0

@Craig: la rimozione di un elemento in un array è O (n), quindi forse non è quello che si vuole fare. Forse vuoi mischiare l'intero array prima? (come si farebbe a shuffe un mazzo di carte) [Questo] (http://stackoverflow.com/a/6127606/165544) è come farlo in C – danr

+0

Bene, probabilmente, o invece controlla se l'array di output lo ha già e se sì, scegli un altro. –

Problemi correlati