// 随机数生成
// arc4random 随机数算法
let dicFaceCount = 6
let randomRoll = Int(arc4random()) % dicFaceCount + 1
print(randomRoll)
// 这是因为, arc4random所返回的不论在什么平台都是一个 UInt32, 无符号整形,相当于一个 Int64 的 >=0 的部分
// 而 Int() 在 32位机上装不下 UInt32, 所以在32位机上有时会崩溃
// 这个函数是上一个的改良版本
// arc4random_uniform(<#T##__upper_bound: UInt32##UInt32#>)
// 内部实现是,将 n 作为输入, 将结果归化到 0 到 n-1 之间,只要我们的输入不超过 Int 的方位,就可以避免危险的转换
let dicFaceCount1: UInt32 = 6
let randomRoll1 = Int(arc4random_uniform(dicFaceCount1)) + 1
print(randomRoll1)
let range = Range(uncheckedBounds: (0, 5))
let start = range.lowerBound
let end = range.upperBound
// 在一个 Range中 随机返回一个 值
func random(in range: Range) -> Int{
let count = UInt32(range.upperBound - range.lowerBound)
return Int(arc4random_uniform(count)) + range.lowerBound}
for _ in 0..<10 {
let range = Range(1...6)
print(random(in: range))
}
网友评论