任何人都可以帮助我吗?假设“p”是完全外生的并且服从均匀分布。然后我想生成“z”,它是一个 TRUE(=1) 或 FALSE(=0) 虚拟对象,并且具有每个三个元素(1-3、4-6、7-9、. .., 58-60) in "z" 应该大于 0。
例如,如果我得到一个像 {1 0 0 1 1 0 0 0 0 0 1 0...} 这样的“z”,我希望再次重复循环(因为 sum(z[7:9])=0 )绘制一个不同的“错误”,直到我得到一个新的“z”,例如 {1 1 0 0 0 1 0 1 0 1 0 0...},其中每三个元素的所有总和都大于 0。我使用的代码是如下。我哪里错了?
set.seed(005)
p<-runif(60, 0, 1)
for (i in 1:20) {
repeat {
error= -0.2*log((1/runif(60, 0, 1))-1) # a random component
z=(p<0.5+error) # TRUE/FALSE condition
z=replace(z, z==TRUE, 1) # replace z to 1 if z is true, else z=0
if (sum(z[(3*i-2):(3*i)])>0) {break}
}
}