了解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