#掷骰子100次
a=sample(c(1:6),100,replace=T)
#硬币的正面记为1,反面记为0,开始投掷,只要投出背面就停止。模拟一万次求平均模拟停止时的次数
len=NULL ##初始化
for(i in 1:10000){
y=NULL
repeat{
x=sample(c(0,1),1)
y=c(y,x)
if(x==0) break
}
len=c(len,length(y))
}
sum(len)/10000
#均匀硬币的正面记为1,反面记为0,开始投掷,只要有连续三次投掷出“110”这样的结果就停止。
#请问:模拟停止时的次数;模拟一万次,平均投掷次数是?
##先模拟一次投掷出110
y=sample(c(0,1),3,replace=T)
i=3
repeat{
if(y[i]==0&&y[i-1]==1&&y[i-2]==1) break #最后三位是110即停止循环
y = c(y,sample(c(0,1),1,replace=T)) #如果不是的话,继续抽样并将原值赋给y
i=i+1
}
length(y)
##接下来是连续三次投掷出110 是不是只要重复y[i]==0部分就可以了?
y=sample(c(0,1),9,replace=T)
i=9
repeat{
if(y[i]==0&&y[i-1]==1&&y[i-2]==1&&y[i-3]==0&&y[i-4]==1&&y[i-5]==1&&y[i-6]==0&&y[i-7]==1&&y[i-8]==1) break #
y = c(y,sample(c(0,1),1,replace=T))
i=i+1
}
length(y)
#[1] 60 结果
##将上面的过程重复一万遍,求length均值
len=0
for(i in 1:10){ ##为了快点得到结果我写成了10次
y=sample(c(0,1),9,replace=T)
i=9
repeat{
if(y[i]==0&&y[i-1]==1&&y[i-2]==1&&y[i-3]==0&&y[i-4]==1&&y[i-5]==1&&y[i-6]==0&&y[i-7]==1&&y[i-8]==1) break #
y = c(y,sample(c(0,1),1,replace=T))
i=i+1
}
len=length(y)
len=c(len,length(y))
}
sum(len)/10
#[1] 85.4 结果
如果你有其他的方法,欢迎加我博客好友交流
转载于:https://my.oschina.net/u/3272626/blog/870635