如果我有一个名字列表,然后是一个第二个名字的列表,那么如何从每个列表中的一个打印一个随机选择
let arrayX = ["James", "Andrew", "Sean"]
let arrayY = ["Smith", "Docherty", "Anderson"]
所以我可以拥有詹姆斯史密斯或安德鲁安德森?
答案 0 :(得分:1)
使用随机生成的索引获取字符串。
let arrayX = ["James", "Andrew", "Sean"]
let arrayY = ["Smith", "Docherty", "Anderson"]
print(arrayX[getRandomIndex(maxRange: arrayX.count)], arrayY[getRandomIndex(maxRange: arrayY.count)])
生成随机索引的函数:
func getRandomIndex(maxRange: Int) -> Int{
return Int(arc4random_uniform(UInt32(maxRange)))
}
答案 1 :(得分:1)
要从数组中选择随机项,您需要在其索引范围内生成随机数。
您可以使用arc4random_uniform:
在Swift中执行此操作Int(arc4random_uniform(UInt32(arrayX.count)))
一旦你知道如何做到这一点,你就可以很容易地从数组中生成一个随机名称:
let arrayX = ["James", "Andrew", "Sean"]
let arrayY = ["Smith", "Docherty", "Anderson"]
let randomForenameIdx = Int(arc4random_uniform(UInt32(arrayX.count)))
let randomSurnameIdx = Int(arc4random_uniform(UInt32(arrayY.count)))
let randomName = "\(arrayX[randomForenameIdx]) \(arrayY[randomSurnameIdx])"
答案 2 :(得分:1)
Swift有一种使用zip
函数交织数组的非常好的方法:
let firstNames = ["James", "Andrew", "Sean"]
let lastNames = ["Smith", "Docherty", "Anderson"]
let randomIndex = Int(arc4random_uniform(UInt32(firstNames.count)))
let randomName = Array(zip(firstNames, lastNames))[randomIndex]
print("\(randomName.0) \(randomName.1)")
zip(_:_:)
接受两个集合(即数组)并返回一对元组对,其中每对元素是两个集合的对应元素。 Array
初始化程序将结果转换为元组数组。
此解决方案始终匹配名字和姓氏,i。即你要么得到James Smith,Andrew Doherty,要么是Sean Anderson。如果这不是您想要的,那么您将需要两个随机索引而不需要zip
函数,如其他答案所示。