我正在尝试生成一个介于0和1之间的随机数.我一直在阅读arc4random(),但是没有关于从中获取浮点数的任何信息.我该怎么做呢?
我知道arc4random返回一个无符号整数,最大为(2 ^ 32)-1.在这种情况下,它总是给出0到1之间的数字.
var x:UInt32 = (arc4random() / 0xFFFFFFFF)
Run Code Online (Sandbox Code Playgroud)
如何除以0xFFFFFFFF导致数字介于0 - 1之间?
想在Swift3中添加一些糖玩具.基本上,我希望能够做到这样的事情:
let randomAdjust = (-10...10).random
Run Code Online (Sandbox Code Playgroud)
为此,我决定扩展ClosedRange.但后来发现它对我的情况可能会更好,我真的只是计划在现在做Int,使用CountableClosedRange.我最近的多次尝试看起来像:
extension CountableClosedRange where Bound == Int {
var random:Int {
return Int(arc4random_uniform(UInt32(self.count) + 1)) + self.lowerBound
}
}
Run Code Online (Sandbox Code Playgroud)
但游乐场抱怨说:
error: same-type requirement makes generic parameter 'Bound' non-generic
extension CountableClosedRange where Bound == Int {
Run Code Online (Sandbox Code Playgroud)
我甚至都不知道它在那里告诉我什么.