Gdy chcemy wylosować np. 6 liczb z 49, a wylosowane liczby nie mogą się powtarzać możemy użyć metody withoutReturn
.
Metoda withoutReturn
/** * Zwraca tablicę k liczb wybraych losowo z tablicy od 1 do n liczb bez * zwracania (powtórzeń) * @param k int - liczba wybieranych liczb * @param n int - największa liczba * @param sorted boolean - określa czy wyjściowa tablica liczb będzie * posortowana czy nie, <code>true</code> oznacza tablicę posortowaną, <code>false</code> * oznacza tablicę nie sortowaną * @return int[] - tablica wybranych liczb */ public static int[] withoutReturn(int k, int n, boolean sorted) { int[] wynik = new int[k]; if (k > n) { System.out .println("pierwsza liczba nie moze byc wieksza od drugiej"); } else { int[] liczby = new int[n]; for (int j = 0; j < liczby.length; j++) { liczby[j] = j + 1; } for (int i = 0; i < wynik.length; i++) { int l = (int) Math.floor(Math.random() * n); wynik[i] = liczby[l]; liczby[l] = liczby[n - 1]; n--; } if (sorted) { Arrays.sort(wynik); } } return wynik; }
Wynik
Po uruchomieniu metody otrzymujemy na przykład:
[2, 16, 25, 27, 34, 35]