Wpis z mikrobloga

@mistyk-gehenny: Nie było mowy o tym, że nie mogą się powtarzać. W szczególnym przypadku ten problem można sprowadzić do wybrania pierwszych 5 elementów z listy i może klient będzie zadowolony ( ͡° ͜ʖ ͡°)
@mistyk-gehenny: czyli lista ma znany rozmiar na etapie działania metody, tylko może być różny.

var randomIndexesArray = new Random().ints(0, myList.size()).distinct().limit(5).toArray();

I potem zwykłym myList.get(randomIndexesArray[dowolna-cyfra-od-0-do-4]) masz losowe elementy
Jak ma być ze zwracaniem, to losujesz 5 indeksów z zakresu 0..list.size() i wybierasz po indeksie.

Jak bez zawracania, to losujesz indeksy podobnie, ale przy każdym kolejnym zmniejszasz górny zakres losowania o 1. Czyli dla listy długości 100, losujesz z zakresów 0..100, 0..99, 0..98 itd. Po wylosowaniu każdego indeksu i wybraniu elementu usuwasz go z listy.

Shuffle to overkill w każdym przypadku, bo ma złożoność O(n), gdzie n długość listy, natomiast metody