我的模拟实验如下:
这是我的实验的代码(在一个循环中):
Youtcomes <- rep(0, 100)
for (i in 1:100) {
X <- sample(1:6, 1, replace=TRUE, rep(1,6)/6)
Y <- sample(c("H", "T"), X, replace=TRUE, rep(1,2)/2)
# assign output inside the loop with [i] indexing
Youtcomes[i] <- sum(Y == "T")
}
我确信这不是最有效的循环,但不幸的是,我已被指示这样做。
然后我需要创建一个随机变量N,它被定义为实验的运行次数,直到第一次出现结果Y>=5
。
我如何设计一个循环来模拟这个值?
答案 0 :(得分:2)
您可以按如下方式使用while
循环:
one.simulation <- function() {
N <- 0
Y <- 0
while (Y < 5) {
X <- sample(6, 1)
Y <- sum(sample(c(Heads = 1, Tails = 0), X, replace=TRUE))
N <- N+1
}
N
}
set.seed(1234)
one.simulation()
# [1] 50
replicate(100, one.simulation())
# [1] 20 9 11 57 35 35 14 106 11 14 6 113 8 28 125 29 4 12 3
# [20] 19 39 4 13 32 23 96 19 20 47 68 96 65 18 71 39 51 6 22
# [39] 111 3 109 9 22 18 99 1 151 85 3 2 102 46 18 31 41 21 14
# [58] 75 10 56 3 63 79 12 59 68 31 47 35 15 14 38 11 36 26 24
# [77] 24 45 43 15 81 1 16 57 29 6 64 11 15 47 107 116 8 62 146
# [96] 217 78 28 9 141