一尘不染

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

swift

我可以为游戏中的物品选择一个随机数,但是可以选择两个数字之间的随机数吗?

所以代替

let number = (arc4random_uniform(100))

我想要这样的东西:

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

或类似的东西?现在,如果我得到了放下武器的信息,那么它可能就是清单中的所有内容。这样我就可以做到,这样只有前几个会掉落特定怪物,或者在更高等级时他们会掉落更好的武器,而不是低等级。


阅读 431

收藏
2020-07-07

共1个答案

一尘不染

Xcode 11•Swift 5.1或更高版本

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

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

注意: 对于较早的Swift版本,请检查编辑历史记录

用法:

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