Я бы создал массив чисел 1-160 и рандомизировал их методом shuffled
. Если вы хотите получить подмножество случайных чисел, возьмите последние шесть, а затем удалите последние шесть из массива. Таким образом, вы не получите дубликатов.
class RandomNumberGenerator {
private var possible: [Int] = []
init(range: ClosedRange<Int>) {
reset(range: range)
}
func next(count: Int) -> [Int] {
let result = possible.suffix(count).map { $0 }
possible.removeLast(result.count)
return result
}
func reset(range: ClosedRange<Int>) {
possible = range.map { $0 }.shuffled()
}
private init() {}
}
let rando = RandomNumberGenerator(range: 1...160)
for _ in 0..<4 {
print(rando.next(count: 6))
}
Обратите внимание, что в массиве не будет чисел, если вы вызовете его более 26 раз. Поэтому для восстановления всех значений в массиве просто вызовите reset
:
rando.reset(range: 1...160)