1

私のシミュレートされた実験は次のとおりです。

  1. 公正なサイコロを振って、1 から 6 までの X の数字を出します。
  2. 公正なコインを X 回 (サイコロを振った回数) 投げて、表が出る回数を記録します。

これは、私の実験のコード (ループ内) です。

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")
}

これは最も効率的なループではないと確信していますが、残念ながら、この方法で行うように指示されています。

Y>=5次に、結果が初めて発生するまでの実験の実行回数として定義される確率変数 N を作成する必要があります。

この値をシミュレートするループを設計するにはどうすればよいでしょうか?

4

1 に答える 1

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
于 2013-03-07T12:00:27.510 に答える