Generate random number of certain amount of digits

后端 未结 7 1921
不知归路
不知归路 2021-01-18 10:51

Hy,

I have a very Basic Question which is :

How can i create a random number with 20 digits no floats no negatives (basically an Int) in Swift ?

Than

7条回答
  •  耶瑟儿~
    2021-01-18 11:23

    Swift 3 appzyourlifz's answer updated to Swift 3

    Step 1:

    extension Int {
    init(_ range: Range ) {
        let delta = range.lowerBound < 0 ? abs(range.lowerBound) : 0
        let min = UInt32(range.lowerBound + delta)
        let max = UInt32(range.upperBound   + delta)
        self.init(Int(min + arc4random_uniform(max - min)) - delta)
        }
    }
    

    Step 2:

    func randomNumberWith(digits:Int) -> Int {
        let min = Int(pow(Double(10), Double(digits-1))) - 1
        let max = Int(pow(Double(10), Double(digits))) - 1
        return Int(Range(uncheckedBounds: (min, max)))
    }
    

    Usage:

    randomNumberWith(digits:4) // 2271
    randomNumberWith(digits:8) // 65273410 
    

提交回复
热议问题