我尝试编写一个模拟100次硬币投掷的脚本,具有一定的成功概率,一个起始资本和一定数量的资金来阻止游戏(' l')。它返回成功的概率。代码有效,但它返回错误消息。有人可以帮帮我吗?提前谢谢!
spins=100
SuccessVector=c()
ProbSuccess<-function(p, capital, l){
for(i in 1:spins){
cap=rep(capital,spins)
while(cap[i]>0 & cap[i]<l){
cap[i]=cap[i]+sample(c(-1,1), replace = TRUE, prob= c(1-p,p))
if(cap[i]==l){SuccessVector[i]=1}
else(SuccessVector[i]=0)
}
}
successes=length(SuccessVector[SuccessVector==1])/length(SuccessVector)
return(successes)
}
ProbSuccess(0.5,10,20)
有50个或更多警告(使用警告()查看前50个
警告()
警告讯息: 1:在cap [i] = cap [i] + sample(c(-1,1),replace = TRUE,...: 要替换的项目数量不是替换长度的倍数
答案 0 :(得分:1)
在样本()的帮助下:
&#34;对于样本,size的默认值是从中推断出的项目数 第一个参数,以便样本(x)生成随机排列 x(或1:x)的元素。&#34;
这就是为什么你得到大小为2的样本。你可能想要使用:
cap[i]=cap[i]+sample(c(-1,1), size=1 , replace = TRUE, prob= c(1-p,p))