Извините за многословное название, я не мог придумать, как лучше это сформулировать. (если у кого-то есть лучшая идея названия для основного принципа, дайте мне знать!)
Итак, у меня есть 2 массива для «случайного приложения тренировки». В функции «Сгенерировать тренировку» я генерирую случайное количество упражнений, выбираю их случайным образом, а затем назначаю количество повторений для каждого упражнения (опять же, случайно).
У меня это работает нормально, но есть некоторые упражнения, которые подходят для большого числа повторений (отжимания могут подходить для arc4random между 10 - 30, скажем), и некоторые, которые подходят для небольшого числа повторений (1-мильная пробежка будет устраивать дугу 4 случайным образом между 1 - 5 скажем).
При создании моей тренировки мне теперь нужно по существу проверить, «принадлежит ли элемент упражнения в позиции [0]« массиву низких повторений », используйте ключ reps X, если он принадлежит« массиву высоких повторений », используйте ключ reps Y». .
Я думаю, что могу сделать бит генерирования случайных чисел, но я застрял на всей проверке.
Вот мой код (с псевдокодом, объясняющим в более широком контексте, надеюсь, что я пытаюсь достичь)
let highRepsArray = ["push ups", "star jumps", "watch tv"]
let lowRepsArray = ["500m row", "3 mile run", "lift a truck"]
let finalExerciseArray = highRepsArray + lowRepsArray
//create function for number of exercises in this specific workout
func generateNewWorkout() -> (randomExerciseArray:Set<String>, randomRepsArray:[Int]) {
let randomKey = Int(arc4random_uniform(4) + 3)
var workoutSet = Set<String>()
let possibleExercises = finalExerciseArray
var repsSet = [Int]()
while workoutSet.count < (randomKey) {
let randomIndex = Int(arc4random_uniform(UInt32(possibleExercises.count)))
workoutSet.insert(possibleExercises[randomIndex])
}
//generate the reps array by counting through the same random key used to generate the number of exercises
while repsSet.count < (randomKey) {
//here's what i can't work out!
IF THE EXERCISE AT POSITION [0] IS IN EXERCISEARRAY1 THEN CHOOSE A RANDOM NUMBER FROM 1 - 10, IF IN EXERCISE ARRAY2 CHOOSE FROM 5 - 10 AND APPEND IT IN THAT POSITION
IF THE EXERCISE AT POSITION [1] IS IN EXERCISEARRAY1 THEN CHOOSE A RANDOM NUMBER FROM 1 - 10, IF IN EXERCISE ARRAY2 CHOOSE FROM 5 - 10 AND APPEND IT IN THAT POSITION
//append the rep number into the array - here it's just the same range for every exercise, but I need to split this out as above
repsSet.append(Int(arc4random_uniform(20)+10))
}
Это почти последнее, что мне нужно сделать, - я не могу тренироваться, пока мое приложение не будет готово, поэтому надеюсь, что кто-то может помочь! : -)