了解iOS中的随机数字Swift 2
我怎样让一个随机数在程序中随着时间的推移而不断变化(每当我想要使用它的时候IE会变成一个新的)?
我很难过 我已经阅读了20多篇关于如何用这种语言生成随机数的文章和文章(我很新),而且我似乎无法得到它的工作。
我基本上试图从1.0-3.0获得一个随机双。 我可以很容易地做到这一点,但一旦它select了这个数字,它不会改变。 这是我使用的代码:
var randomNumber:Double = (Double(arc4random() % 3) + 1);
然后我使用这个作为线的值:
SKAction.waitForDuration(randomNumber)
每次我运行这个我想再次改变数字,但一旦程序启动它继续相同的数字(每次我重置程序是不同的)
我知道如何生成号码,但我似乎无法find任何更新它!
我试过添加
randomNumber = (Double(arc4random() % 3) + 1);
在代码中,它会跑很多次,但它仍然给我同样的事情。
我非常熟悉c ++,所以如果你想解释一些东西,你可以参考它的风格,我很可能会理解。
使用:
SKAction.waitForDuration(sec: NSTimeInterval, withRange: NSTimeInterval)
其中秒是你想要使用的时间范围的中间值,因为范围在+方向上。
所以在你的情况下,你想要:
SKAction.waitForDuration(2, withRange: 2), this will get you a range of 1 to 3 (-1 to 1 range)
如果由于某种原因,你需要一个不断创build一个新的随机等待的方法,你总是可以这样做:
extension SKAction { func waitForRandomDuration() -> SKAction { var randomNumber:Double = (Double(arc4random() % 3) + 1); return SKAction.waitForDuration(randomNumber); } }
然后确保在每次需要完成时将其作为新的动作添加到Sprite中,如果将其存储到variables中,则随机性不会改变。
你需要的是一个只读的计算属性,每次你尝试访问它时都会返回一个新的随机数。
var randomNumber: Double { return Double(arc4random_uniform(3).successor()) } print(randomNumber) // 2.0 print(randomNumber) // 2.0 print(randomNumber) // 1.0 print(randomNumber) // 3.0 print(randomNumber) // 3.0
试试这个代码:
func randomNumberBetween1_0And3_0() -> Double { return 1 + Double(arc4random_uniform(2000)) / 1000.0 } for index in 1...10 { print(randomNumberBetween1_0And3_0()) }
样本输出是:2.087 1.367 1.867 1.32 2.402 1.803 1.325 1.703 2.069 2.335