2017-03-10 48 views
0

我嘗試編寫一個腳本,該腳本模擬一定的成功概率,啓動資本和一定數量的資金來停止遊戲('l 「)。它返回成功的可能性。代碼有效,但會返回錯誤消息。有人可以幫我嗎?提前致謝!R錯誤要替換的項目數不是替換長度的倍數

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:在帽[I] =帽[I] +樣品(C(-1,1),替換= TRUE,...: 項替換的數目不更換長

回答

1

的倍數從樣品()的幫助:

「對於樣品大小的缺省值是從 第一個參數推斷物品的數量,從而使樣本(x)的生成隨機置換x的元素 (或1 :X)「

這就是爲什麼你會得到大小2.樣品您可能需要使用:

cap[i]=cap[i]+sample(c(-1,1), size=1 , replace = TRUE, prob= c(1-p,p)) 
+0

哦是的,你說得對!你有我的贊成。 – Cardinal

+0

不用擔心。還請考慮接受對您的問題最有幫助的答案(請參閱stackoverflow.com/help/someone-answers)。 –

相關問題