【问题标题】:Generating random Vectors in R在 R 中生成随机向量
【发布时间】:2017-10-17 03:45:00
【问题描述】:

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

  1. 生成 10.000 个 4 维向量。

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

  3. 检测所有至少包含 3 个“1”的向量。

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

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条件,我想应该可以结束任务了。 谁能帮帮我?

【问题讨论】:

  • ?replicate
  • 对不起,我真的无法应用你的提示。

标签: r loops random


【解决方案1】:

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

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)

【讨论】:

  • 我很欣赏你的提议,但我不得不使用sample
  • @Xarrus 这个答案已经为你完成了 95% 的工作。我想你可以提供剩余的 5% 来将 rbinom 换成 sample
  • 您可以将循环(即apply)替换为rowSums(X)&gt;2
【解决方案2】:

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

num = 0

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多