从数组中选择一个随机元素

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

假设我有一个数组,我想随机选择一个元素。

做这件事最简单的方法是什么?

最明显的方法是array[random index],但是也许有一种类似于红宝石的东西array.sample是吗?或者如果没有,可以通过使用扩展来创建这样的方法吗?

提问于
用户回答回答于

为了回答问题,可以这样做来实现随机数组选择:

let array = ["Frodo", "sam", "wise", "gamgee"]
let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
print(array[randomIndex])
用户回答回答于

根据Lucas的话,可以为Array类创建一个扩展,如下所示:

extension Array {
    func randomItem() -> Element? {
        if isEmpty { return nil }
        let index = Int(arc4random_uniform(UInt32(self.count)))
        return self[index]
    }
}

例如:

let myArray = [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16]
let myItem = myArray.randomItem() // Note: myItem is an Optional<Int>

扫码关注云+社区