如何在将结果分配给R中的向量之前使用while循环?

时间:2013-03-07 11:45:21

标签: r statistics probability

我的模拟实验如下:

  1. 滚动公平的骰子以获得1到6之间的数字X.
  2. 将公平硬币翻过X次(即模具卷数)并记录头数。
  3. 这是我的实验的代码(在一个循环中):

    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

    我如何设计一个循环来模拟这个值?

1 个答案:

答案 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