据我所知,arc4random返回无符号整数,最大为(2 ^ 32)-1。在这种情况下,它总是给出0到1之间的数字。
var x:UInt32 = (arc4random() / 0xFFFFFFFF)
除以0xFFFFFFFF如何导致数字介于0 - 1?
之间答案 0 :(得分:4)
如你所说,
arc4random返回无符号整数,最大为(2 ^ 32)-1
0xFFFFFFFF等于(2 ^ 32)-1,这是arc4random()
的最大可能值。因此,算术表达式(arc4random() / 0xFFFFFFFF)
为您提供了一个始终在0和1之间的比率 - 因为这是一个整数除法,结果只能在0和1之间。
答案 1 :(得分:2)
要接收0到1之间的值,结果必须是浮点值
import Foundation
(1..<10).forEach { _ in
let x: Double = (Double(arc4random()) / 0xFFFFFFFF)
print(x)
}
/*
0.909680047749933
0.539794033984606
0.049406117305487
0.644912529188421
0.00758233550181201
0.0036165844657497
0.504160538898818
0.879743074271768
0.980051155663107
*/