2012-01-29 12 views
7

Mam tablicę wartości liczbowych i chcę losowo wybrać wartość z tej tablicy, a następnie wstawić ją do zmiennej int.Wybierz losową wartość z tablicy

Nie jestem pewien, jaki kod będzie trzeba zobaczyć. Tak więc,

Oto pętla for, której używam do generowania 13 liczb (1-13) i wstawiania ich do tablicy.

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

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

     clubsArray[i] = i +1; 

    } 

To działa dobrze, ale teraz muszę się wybrać na przykład 2 losowych wartości z tablicy w tym (a następnie włóż go do zmiennej, która będzie używana później.

Mam rozejrzał na wielu stronach internetowych i widziałem takie rzeczy jak ArrayList<String> w celu wstawienia wartości do tablicy, a następnie użyj Random generator = new Random(), aby wybrać wartość z tablicy, a następnie .remove(), aby usunąć ją z tablicy, ale gdy kiedykolwiek użyłem, że to robi Działa:

+0

tak naprawdę nie "wstaw" do zmiennej int, raczej "przypisz" do :) –

+0

możliwy duplikat [Jak wygenerować losową liczbę z Java z podanej listy liczb] (http://stackoverflow.com/questions/1247915/how-to-generate-a-random-number-with-java-from-given-of-numbers) – Mark

Odpowiedz

24

Po prostu clubsArray[new Random().nextInt(clubsArray.length)] zadziała

Lub do losowej kolejności elementów, użyj List<?> clubsList=Arrays.asList(clubsArray); Collections.shuffle(clubsList);.

+0

Dziękuję. Jeśli miałbym to wykorzystać, czy powinienem też usunąć go z Tablicy? (aby zapobiec wybieraniu duplikatów na późniejszym etapie) – Craig

+0

@Craig: Usunięcie elementu w tablicy to O (n), więc może to nie jest to, co chcesz zrobić. Może najpierw chcesz przetasować całą tablicę? (jak można by przetasować talię kart) [This] (http://stackoverflow.com/a/6127606/165544) to jak to zrobić w C – danr

+0

No, prawdopodobnie, lub zamiast tego sprawdź czy tablica wyjściowa już to ma , a jeśli tak, wybierz inną. –

Powiązane problemy