我需要在R中进行蒙特卡罗模拟以解决这个问题:
三名游客抵达一个拥有五家酒店的城镇。这三位游客每人签到另一家酒店的概率是多少?他们在同一家酒店签到的概率是多少?酒店具有相同的特点。
我迷失了它,我尝试使用下面的代码,但似乎没有用。
esperanza_Xn <- function(n,p,m) {
sim=0; q=1-p
for(i in 1:m){
r=runif(n,1,p)
e=2*r-1; X=0
for(j in 1:n){
X[j+1]=X[j]+e[j]
}
sim[i]=X[n+1]}
a=paste("E(X_n) teórico=",n*(p-q))
b=paste("E(X_n) Monte Carlo=",mean(sim))
rbind(a,b)
}
实施例
esperanza_Xn(100,5,3)
答案 0 :(得分:1)
摆脱所有for循环:
sim.result <- replicate(n, sample(1:p, m, replace=TRUE))
hotel.count <- apply(sim.result, 2, function(x) length(unique(x)))
然后是计算比例的问题:
# Probability of all different hotel assignment
mean(hotel.count == m)
# Probability of same hotel assignment
mean(hotel.count == 1)