我想得到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()]
}发布于 2015-03-16 15:40:35
你的财产
var previousPosition : Int?是addWall()方法的本地属性,因此每次调用该方法时都初始化为nil。如果让它成为周围类的属性,那么:
class YourClass {
var previousPosition : Int?
func addWall() { ... }
// ...
}然后,只有在创建类的实例时,它才被初始化为nil。
https://stackoverflow.com/questions/29080787
复制相似问题