swift - 生成一定数量的数字的随机数

标签 swift random range

你好,

我有一个非常基本的问题是:

我如何在 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/

相关文章:

swift - 如何将数据添加到应用程序中的 coreML 文件

bash - 在 bash 中使用 $RANDOM + $FLOOR 有什么问题?

python - Python中带break命令的随机函数

python - 索引应该在范围内...但不是

ios - Swift gcm推送无法收到通知

swift - 如何将数据从AddController传递到UITableViewController

c# - System.Random 会始终为跨平台的给定种子生成可预测的数字吗?

PHP 随机 - 排除/包含/ float /底片和其他动物

python - codecademy python 关于 "range"的一些问题

ios - 自动滚动图像并对点击图像执行操作