代码之家  ›  专栏  ›  技术社区  ›  Max

创建概率取决于索引列的矩阵

  •  0
  • Max  · 技术社区  · 8 年前

    如何创建一个矩阵10x10,只有1(head)和0(tails),heads的概率是1除以列的索引。

    我尝试了几件事,但都不管用,真是令人沮丧。我试着用一个向量和一个for循环来实现它。

      mat <- matrix(sample(c(0,1), 100, replace=TRUE, prob=c(1/h, 1-(1/h)), 10))
    

    但现在唯一的问题是如何定义h。

    1 回复  |  直到 8 年前
        1
  •  1
  •   markus    8 年前

    这里有一个选项,使用 sapply

    n_col <- 10
    n_row <- 10
    mat <- matrix(nrow = n_row,
                  ncol = n_col)
    
    set.seed(1)
    sapply(1:n_col, function(x) {
      mat[, x] <- sample(x = c(1, 0),
                         size = n_row,
                         replace = TRUE,
                         prob = c(1/x, 1 - 1/x))
    })
    #      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
    # [1,]    1    0    1    0    1    0    1    0    0     0
    # [2,]    1    0    0    0    0    1    0    0    0     0
    # [3,]    1    1    0    0    0    0    0    0    0     0
    # [4,]    1    0    0    0    0    0    0    0    0     0
    # [5,]    1    1    0    1    0    0    0    0    0     0
    # [6,]    1    0    0    0    0    0    0    1    0     0
    # [7,]    1    1    0    1    0    0    0    0    0     0
    # [8,]    1    1    0    0    0    0    0    0    0     0
    # [9,]    1    0    1    0    0    0    0    0    0     0
    #[10,]    1    1    0    0    0    0    1    1    0     0
    

    希望有帮助。