我是 Swift 的新手,刚刚在教程中看到此代码用于生成随机角度。

func random() ->CGFloat{
    return CGFloat(Float(arc4random()) / 0xFFFFFFFF)
}
func random(#min: CGFloat, max:CGFloat) ->CGFloat{
    return random()*(max-min)+min
}

我想知道 return CGFloat(Float(arc4random()) / 0xFFFFFFFF) 行是否生成 0 到 1.0 之间的随机浮点数?那为什么不能只使用drand()呢?这两个功能有什么区别吗?谢谢!

最佳答案

drand48() 适用于许多应用程序,但不安全(换句话说,可预测)。 arc4random()not perfect 的设计考虑了安全性。
我认为苹果因此插入人们使用 arc4random()。所以,回答你的问题:如果你生成随机数来模拟某些东西, drand48 应该没问题,但如果你生成随机数来保护某些东西,那么使用 arc4random() (或者更安全的东西,比如 SecRandomCopyBytes() )。

来自 ONLamp 的 Secure Programming Techniques :

关于swift - 为什么使用 Float(arc4random())/0xFFFFFFFF 而不是 drand(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34490662/

10-12 14:49