Другой подход заключается в том, чтобы генерировать числа напрямую, без необходимости boolean[]
.
Set<Integer> numbers = new HashSet<>();
Random random = new Random();
for (int i = 0; i < 6; i++) {
int number = getNextNumber(random);
// we can get the same number twice
while (numbers.contains(number)) {
number = getNextNumber(random);
}
numbers.add(number);
}
, где getNextNumber()
определяется как:
public int getNextNumber(Random random) {
return random.nextInt(35) + 1;
}
Я нахожупроще генерировать значения напрямую, чем хранить логические значения в массиве.В конце вам нужно только знать, какие цифры нарисованы, а не какие цифры не нарисованы.
Кроме того, ваше решение не учитывает дублирующиеся номера, поэтому один и тот же номер может быть нарисован несколько раз.Чтобы предотвратить это, вам придется либо перебирать массив n
раз, либо сохранять уже нарисованные числа.Это именно то решение, которое описано выше, и оно быстрее.