В настоящее время я работаю над проблемой домашних заданий и столкнулся с проблемой. Проблема, над которой я работаю, - это модифицированная версия классической проблемы с днем рождения. Тем не менее, я также пытаюсь сейчас не просто выяснить вероятность того, что у двух людей будет тот же день рождения, но, более конкретно, вероятность того, что у кого-то будет такой же день рождения, как и я.Найти индекс специфической ценности в R
Ниже приведены рабочие функции для существующей проблемы с днем рождения для задания.
birthdays = function(n) {
s = sample(1:365, n, replace = TRUE)
return(s)
}
duplicate.birthdays = function(n) {
b = birthdays(n)
dups = anyDuplicated(b)
dups = any(dups>0)
return(dups)
}
prob.duplicate =function(n) {
r = replicate(5000, duplicate.birthdays(n))
prob = sum(r)/length(r)
return(prob)
}
n = 1:100 # number of people I'm sampling from
probs = sapply(n, prob.duplicate)
Я попытался изменить эти функции, чтобы специально настроить цель, если у кого-то есть тот же день рождения, что и я. Я предположил, что из 1 - 365 дней я ищу, когда число 1 появляется снова, поскольку я принимаю 1, или 1 января - мой день рождения.
Ниже моя модифицированная версия функции duplicate.birthdays
duplicate.birthdays = function(n) {
b = birthdays(n)
index = 1:length(b)
x = 1
index.get.1 = index [x=1]
return(index.get.1)
}
Однако я всегда получать вернулся первый индекс вместо того, соответствует ли не показатель значение 1.
Любая помощь будет будем очень благодарны и, надеюсь, это достаточно информации, чтобы понять, по сути, что я пытаюсь понять.
После попытки этих изменений я получаю обратно список переменных проб, по существу, int (0) int (0) int 12 . Является ли это предоставление индекса, в котором есть соответствие 1? Не совсем уверен, что это точно, но спасибо за помощь! – Zerbraxi
Да, он дает позиции, где есть совпадение, или 'integer (0)', если их нет. Более удобной для пользователя версией может быть: 'duplicate.birthdays <- function (n) { b <- дни рождения (n); if (1% in% b) { return (который (b == 1)) }; } ' – jeremycg
Большое спасибо! Это поставило меня на правильный путь. – Zerbraxi