PL
Java - generuj unikalne liczby losowe
3 points
Istnieje kilka sposobów generowania unikalnych liczb losowych w Javie.
xxxxxxxxxx
1
List<Integer> list = new ArrayList<>();
2
for (int i = 1; i <= 10; i++) {
3
list.add(i);
4
}
5
Collections.shuffle(list);
6
7
// [8, 9, 7, 2, 10, 5, 3, 6, 1, 4]
8
System.out.println(list);
Collections.shuffle(list)
- java docs: Losowo permutuje określoną listę przy użyciu domyślnego źródła losowości.
Wszystkie permutacje występują z mniej więcej równym prawdopodobieństwem.
xxxxxxxxxx
1
Set<Integer> unique = new HashSet<>();
2
3
while (unique.size() != 10) {
4
int randInt = ThreadLocalRandom.current().nextInt(1, 20);
5
unique.add(randInt);
6
}
7
8
// [16, 1, 17, 18, 6, 9, 10, 13, 14, 15]
9
System.out.println(unique.toString());
Generujemy nowe unikalne liczby, dopóki HashSet
nie osiągnie oczekiwanego rozmiaru.
xxxxxxxxxx
1
List<Integer> list = ThreadLocalRandom.current()
2
.ints(1, 20)
3
.boxed()
4
.distinct()
5
.limit(10)
6
.collect(Collectors.toList());
7
8
// [3, 17, 9, 15, 4, 19, 18, 16, 14, 8]
9
System.out.println(list);
ints(1, 20)
- generuje liczby losowe od 1 do 20
limit(10)
- wielkość naszej kolekcji wyjściowej będzie wynosić 10