EN
Java - generate unique random numbers
3 points
There is couple of ways to generate unique random numbers in java.
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:
Randomly permutes the specified list using a default source of randomness.
All permutations occur with approximately equal likelihood.
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());
We generate new unique numbers until HashSet
has expected size.
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)
- generate random numbers between 1 and 20limit(10)
- size of our output collection will be 10