我想编写一个程序,使我的餐厅可以在我的学校中随机座位。
我很了解
import Foundation
var randomNumbers: [Int] = []
for _ in 0...5 {
let randomInt = Int.random(in: 0...160)
randomNumbers.append(randomInt)
}
print(randomNumbers)
这会打印1到160之间的6个数字。我想说4次。您将如何做到这一点,这样您就无法与以前坐过的人坐在一起
答案 0 :(得分:0)
我将创建一个数字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)