Как распечатать из двух списков на Swift - PullRequest
0 голосов
/ 06 июня 2018

Если у меня есть список имен, а затем список имен, то как мне распечатать случайный выбор из 1 в каждом списке

let arrayX = ["James", "Andrew", "Sean"]
let arrayY = ["Smith", "Docherty", "Anderson"]

Чтобы я мог иметь Джеймса Смита или ЭндрюAnderson

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Чтобы выбрать случайный элемент из массива, вам нужно сгенерировать случайное число в пределах его диапазона индекса.

Вы можете сделать это в Swift, используя arc4random_uniform:

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])"
0 голосов
/ 06 июня 2018

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 преобразует результат в массив кортежей.

Это решение всегда соответствует имени и фамилии, т. Е. Вы получаете Джеймса Смита, Эндрю Доэрти или Шона Андерсона.Если это не то, что вам нужно, вам понадобятся два случайных индекса, а не функция zip, как предложено в других ответах.

0 голосов
/ 06 июня 2018

Строка выборки со случайно сгенерированным индексом.

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)))
}
...