arrays - Swift 从数组返回字符串

标签 arrays macos swift

我正在尝试从此数组中获取一个随机名称作为字符串而不是数字。

I.E:该数组通常返回 0 到 9 之间的随机数,我宁愿它返回 0 到 9 代表的字符串(如 Preston 或 James)而不是数字本身。

下面的代码有问题,但我希望它能让你明白我在做什么。

 var firstName : [String] = ["Preston", "Ally", "James", "Justin", "Dave", "Bacon", "Bossy",     "Edward", "Edweird" ]

var standardIdent = "First Name:\(firstName[random(0...9)]) Last Name:\(lastName[random(0...5)]) \n Age:\(rand())"
println(standardIdent)

感谢您的帮助!

最佳答案

您不应将 arc4random()% 运算符一起使用。这引入了一个 modulo bias .

在 Swift 4.2 及更高版本中,您应该使用 randomElement():

let firstNames = ["Preston", "Ally", "James", "Justin", "Dave", "Bacon", "Bossy", "Edward", "Edweird"]
let randomFirstName = firstNames.randomElement()!

或者,如果数组可能为空,则不要使用强制解包运算符,而是:

guard let randomFirstName = firstNames.randomElement() else {
    print("array was empty")
    return
}

在 4.2 之前的 Swift 版本中,您应该:

  1. 您通常应该使用 arc4random_uniform,而不是 arc4random,以消除模偏差。

  2. 您可能应该使用数组中项目的计数来确定可能的索引值范围。

因此:

guard firstNames.count > 0 else { ... }
let index = Int(arc4random_uniform(UInt32(firstNames.count)))
let randomFirstName = firstNames[index]

关于arrays - Swift 从数组返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548439/

相关文章:

ios - 在键盘上显示带有按钮的 UIView,例如 Skype、Viber 信使(Swift、iOS)

c - 程序多次接受最后一行

arrays - Swift 组合两个数组并对数组进行排序

c++ - c++ 清屏

ios - macOS 上的通用链接

ios - 如何修复 cocoapods 中丢失的 Assets

python - 如何向量化以下python代码?

arrays - Ruby 数组删除 if 并获取已删除的对象

macos - Apple Silicon 上的 ARCHFLAGS 值是否正确?

swift - 如何获得最多 2 个小数位的 Double 值