首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在将结果分配给R中的向量之前,如何使用while循环?

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

Stack Overflow用户
提问于 2013-03-07 11:45:21
回答 1查看 320关注 0票数 1

我的模拟实验如下:

  1. 滚动一个公平的模具,得到一个数字X在1到6之间。
  2. 抛出一个公平的硬币X次(即从模具辊上的数字),并记录头部的数目。

这是我的实验的代码(在循环中):

代码语言:javascript
运行
复制
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为止。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-07 12:00:27

您可以按以下方式使用while循环:

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15270350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档