Все задачи оформляются в виде функции!
Даны 2 числа a и b. Нужно вывести на экран значение числа, которое больше.
Даны 3 числа: a,b и c. Нужно вывести на экран значение числа, которое больше.
Задан массив и числа a, b. Вывести все индексы переменных, где выполняется \(a < x[i] < b\).
Дан массив длинны n, состоящий из одних 0. Вы выбираете рандомное число от 1 до n(с помощью функции sample). Это рандомное число показывает индекс элемента массива, который нужно изменить с 0 на 1. После чего вы опять выбираете рандомное число. Это делается до тех пор пока массив не будет состоять из одних 1. Например: был массив с(0,0,0,0). Выпало рандомное число 3. Теперь массив выглядит так : c(0,0,1,0). Вы продолжаете так делать, пока все нули не исчезнут. Нужно посчитать, сколько раз выбиралось рандомное число.
В чем минус этой функции? Перепишите её.
Что можно сказать о следующем коде? Как бы вы его изменилил?
Написать рекурсивную функцию для нахождения факториала.
Давайте создадим функцию для игры. Есть принц, на старте игры у него есть h
здоровья. Его цель – забраться по лестнице на башню, где находится принцесса, которую нужно спасти от великана. Количество ступенек равно m
. Двигается он по одной ступеньке вверх. Но с каждым продвижением наверх с вероятностью p
его бьет по голове великан и герой теряет z
здоровья и остается на прежней ступеньке. Нужно понять, сможет ли принц забраться на башню. Это означает, что принц должен забраться на башню и остаться живым.
Hints:
Сколько параметров идет на вход?
Чтобы замоделировать удар можно воспользоваться функцией sample
, у которой есть параметр prob
. Например можно бросить монетку, у которой вероятность выпадения орла равна 0.7.
Задача циклична. Мы знаем два цикла: for
и while
. Знаем ли мы сколько придется делать итераций? От этого ответа и зависит выбор.
Пробуйте принтовать ваши параметры во время игры. Чтобы сделать это красиво, используйте функцию paste
.
Можно медленно наблюдать за ходом игры с помощью функции readline()
. Это нужно, чтобы подобрать такие параметры, с которыми игра будет всегда разной.
prinz <- function(h, m, p, z) {
current <- 0
while (h > 0 && current < m) {
kick <- sample(c('Ударил :(', 'Не ударил :)'), size = 1, prob = c(p, 1-p))
# print(kick)
if (kick == 'Ударил :(') {
h <- h - z
if (current != 0) {
current <- current - 1
}
}else{
current <- current + 1
}
# print(paste('Здоровья осталось', h))
# print(paste('Ступенька', current))
# print('--------------------')
# readline('Нажмите Enter:')
}
if (h > 0){
return(1)
}else{
return(0)
}
}
prinz(100, 50, 0.25, 5) # хорошие параметры
## [1] 0
Решив предыдущую задачу, вы создали функцию, которая отвечает на вопрос: “Выиграл ли принц?”. Запустив при некотрых параметрах эту функцию несколько раз, вы будете получать разные результаты. Как оценить вероятность того, что принц сможет спасти принцессу? В этом нам поможет давно знакомая нам формула:
\[ P = \frac{m}{n}, \]
где m
- количество побед прица в n
играх.
Hint: