加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用Swift生成范围(10 … 20)中的随机数

发布时间:2020-12-14 04:47:57 所属栏目:百科 来源:网络整理
导读:参见英文答案 How does one generate a random number in Apple’s Swift language?????????????????????????????????????25个 我可以在我的游戏中为我的项目选择一个随机数,但是 是否有可能在2个数字之间选择一个随机数? 而不是 let number = (arc4random_
参见英文答案 > How does one generate a random number in Apple’s Swift language?????????????????????????????????????25个
我可以在我的游戏中为我的项目选择一个随机数,但是
是否有可能在2个数字之间选择一个随机数?

而不是

let number = (arc4random_uniform(100))

我想要这样的东西:

let number = (arc4random_uniform(10...20))

或类似的东西?
现在,如果我得到武器掉落,它可以是我列表中的所有内容.
通过这种方式,我可以做到这一点,只有前几个会对特定怪物有所下降,或者在更高级别,他们会丢弃更好的武器而不是低等级.

解决方法

Xcode 10?Swift 4.2

extension Range where Bound == Int {
    var random: Int {
        return Int.random(in: self)
    }
    func random(_ n: Int) -> [Int] {
        return (0..<n).map { _ in random }
    }
}
extension ClosedRange where Bound == Int {
    var random: Int {
        return Int.random(in: self)
    }
    func random(_ n: Int) -> [Int] {
        return (0..<n).map { _ in random }
    }
}

Xcode 9?Swift 4

extension Range where Bound == Int {
    var random: Int {
        return lowerBound + numericCast(arc4random_uniform(numericCast(count)))
    }
    func random(_ n: Int) -> [Int] {
        return (0..<n).map { _ in random }
    }
}
extension ClosedRange where Bound == Int {
    var random: Int {
        return lowerBound + numericCast(arc4random_uniform(numericCast(count)))
    }
    func random(_ n: Int) -> [Int] {
        return (0..<n).map { _ in random }
    }
}

Xcode 8.3.2?Swift 3.1

extension Range where Bound: Strideable,Bound == Int {
    var random: Int {
        return lowerBound + Int(arc4random_uniform(UInt32(count)))
    }
    func random(_ n: Int) -> [Int] {
        return (0..<n).map { _ in random }
    }
}
extension ClosedRange where Bound: Strideable,Bound == Int {
    var random: Int {
        return lowerBound + Int(arc4random_uniform(UInt32(count)))
    }
    func random(_ n: Int) -> [Int] {
        return (0..<n).map { _ in random }
    }
}

用法:

(10...20).random    // 16
(0...1).random(10)  // [0,1,0]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读