的
Int整数类型是在iPhone 5 32位整数,在一个5S
64位整数。由于
arc4random()返回的
UInt32值是
IntiPhone 5
的正范围的两倍,因此您的第一个版本基本上有50%的机率在此行崩溃:
var index = Int(arc4random())
修改后的版本将等待转换,直到您使用取模和为止
max,因此可以安全地转换到
Int那里。您应该检出arc4random_uniform,它为您处理模并避免当前实现中固有的偏差。

的
Int整数类型是在iPhone 5 32位整数,在一个5S
arc4random()返回的
UInt32值是
IntiPhone 5
var index = Int(arc4random())
修改后的版本将等待转换,直到您使用取模和为止
max,因此可以安全地转换到
Int那里。您应该检出arc4random_uniform,它为您处理模并避免当前实现中固有的偏差。