我目前正在处理家庭作业问题,并遇到了一个问题。我正在处理的问题是经典生日问题的修改版本。然而,我现在也试图弄清楚两个人生日相同的可能性,更具体地说是其他人和我一样生日的概率。
以下是作业现有生日问题的工作功能。
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匹配。
任何帮助都会非常感激,希望这些信息足以理解我想要达到的目标。
答案 0 :(得分:2)
你的功能有点奇怪:你按x=1
进行子集化,总是为1。
尝试类似:
duplicate.birthdays <- function(n) {
which(birthdays(n)==1)
}