Использование разных диапазонов случайных чисел в зависимости от того, к какому массиву принадлежит соответствующий элемент - PullRequest
0 голосов
/ 24 апреля 2018

Извините за многословное название, я не мог придумать, как лучше это сформулировать. (если у кого-то есть лучшая идея названия для основного принципа, дайте мне знать!)

Итак, у меня есть 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))
    }

Это почти последнее, что мне нужно сделать, - я не могу тренироваться, пока мое приложение не будет готово, поэтому надеюсь, что кто-то может помочь! : -)

1 Ответ

0 голосов
/ 24 апреля 2018

Ваша модель не подходит для ваших нужд.Вам нужно использовать пользовательскую структуру, которая содержит имя упражнения И подходящий диапазон повторений.Тогда тривиально сгенерировать случайное число из этого диапазона.

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