在R中生成随机向量

时间:2017-05-17 15:20:44

标签: r loops random

我关注R中的以下编程练习:

  1. 生成10.000个4维向量。

  2. 矢量的分量是从伯努利分布生成的,概率为0.5。

  3. 检测至少3'1'的所有载体。

  4. 为了生成一个这样的样本我使用

    sample(0:1, 4, replace = TRUE)
    

    为了生成矢量,我使用

    x <- c(sample(0:1, 4, replace = TRUE))
    

    由于我需要10.000个向量,我使用for循环:

    for(i in 1:10000){c(sample(0:1, 4, replace = TRUE))}
    

    所以,现在我有10.000个向量。 为了继续执行任务,我应该将所有内容放入列表中。 然后,使用合适的if条件,我认为应该可以完成任务。 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

以下是您的问题的解决方案:

set.seed(135)
n <- 10000
X <- matrix(rbinom(4*n, size=1, prob=0.5), nrow=n)
apply(X, 1, function(x) sum(x)>2)

答案 1 :(得分:1)

@MarcoSandri的解决方案会更快,但您可以通过这种方式修改解决方案以使其正常工作

num = 0

for(i in 1:10000){
  x = c(sample(0:1, 4, replace = TRUE))

  if(sum(x) >= 3){
    num = num + 1
  }
}