你好,
我有一个非常基本的问题是:
我如何在 Swift 中创建一个 20 位无 float 无负数(基本上是 Int)的随机数?
谢谢大家的回答XD
最佳答案
第一步
首先我们需要Int
的扩展来生成一个范围内的随机数。
extension Int {
init(_ range: Range<Int> ) {
let delta = range.startIndex < 0 ? abs(range.startIndex) : 0
let min = UInt32(range.startIndex + delta)
let max = UInt32(range.endIndex + delta)
self.init(Int(min + arc4random_uniform(max - min)) - delta)
}
}
可以这样使用:
Int(0...9) // 4 or 1 or 1...
Int(10...99) // 90 or 33 or 11
Int(100...999) // 200 or 333 or 893
第二步
现在我们需要一个函数来接收请求的位数、计算随机数的范围并最终调用 Int
的新初始化程序。
func random(digits:Int) -> Int {
let min = Int(pow(Double(10), Double(digits-1))) - 1
let max = Int(pow(Double(10), Double(digits))) - 1
return Int(min...max)
}
测试
random(1) // 8
random(2) // 12
random(3) // 829
random(4) // 2374
关于swift - 生成一定数量的数字的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952208/