用R中给定概率的随机条目创建矩阵

问题描述

我想创建一个100x100的矩阵A,其条目a_ij从集合{0,1}中随机选择,其中P(a_ij = 1)= 0.2和P(a_ij = 0)= 0.8。

这是我到目前为止尝试过的:

n<-100
matrix<-matrix(0,100,100)
mynumbers<-c(1,0)
myprobs<-c(0.2,0.8)
for(i in 1:100){
  for (j in 1:100){
    matrix[i,j]<-sample(mynumbers,1,replace=TRUE,prob=myprobs)
  }
}
matrix

我不确定样本数量是否为1,但是这种方法似乎只有在我选择size = 1的情况下才有效...这是正确的方法吗?预先谢谢你!

解决方法

正如@akrun指出的那样,有很多简单的方法。 100 x 100的矩阵表示10,000个条目。 prob = .2表示成功= 1 = P(a_ij = 1)= 0.2,在这种情况下,size意味着一次尝试。 matrix参数应该是不言而喻的。

set.seed(2020)
trials <- rbinom(n = 10000,size = 1,prob = .2)
my.matrix <- matrix(trials,nrow = 100,ncol = 100)

或更接近您的代码

n <- 10000
mynumbers<-c(1,0)
myprobs<-c(0.2,0.8)
trials2 <- sample(x = mynumbers,size = n,replace = TRUE,prob = myprobs)
my.matrix2 <- matrix(trials2,ncol = 100)