我希望获得5个定义点之间的随机值,而不会获得相同的结果两次。
以下是如何避免两次相同结果的一个很好的解释: How to generate a random number in Swift without repeating the previous random number?
然而,在我的代码中,它不起作用,因为它仍然是完全随机的,我不明白为什么。
func addWall(){
let positions = [
CGPoint(x: -120,y: -70),
CGPoint(x: -50,y: -70),
CGPoint(x: 10,y: -70),
CGPoint(x: 70,y: -70),
CGPoint(x: 120, y: -70),
]
var previousPosition : Int?
func randomPosition() -> Int {
var randomPosition = Int(arc4random_uniform(UInt32(positions.count)))
while previousPosition == randomPosition {
randomPosition = Int(arc4random_uniform(UInt32(positions.count)))
}
previousPosition = randomPosition
return randomPosition
}
Wall.position = positions[randomPosition()]
}
答案 0 :(得分:0)
您的财产
var previousPosition : Int?
是本地到addWall()
方法,因此初始化为nil
每次调用该方法。如果你把它作为一个属性
而不是周围的类:
class YourClass {
var previousPosition : Int?
func addWall() { ... }
// ...
}
然后仅在类的实例时将其初始化为nil
已创建。