首页 > 解决方案 > 如何在 (-1,1) 上生成具有指定数量负值的随机矩阵?

问题描述

我需要生成多个 14x14 矩阵,其中包含 -1 和 1 之间的值,每个矩阵中有 55 个随机排列的负值。

标签: rmatrix

解决方案


您生成一个向量,前 55 个为负值,其余为非负值:

c(runif(55,min=-1,max=0),runif(14*14-55,min=0,max=+1))

然后我们使用sample()打乱这个向量(感谢@DanielO 指出这一点!)并将这个向量包装成一个矩阵:

nc=14
nr=14

set.seed(111)
M = matrix(sample(
c(runif(55,min=-1,max=0),
runif(nr*nc-55,min=0,max=+1))
),nrow=nr,nc=nc)

table(M<0)
FALSE  TRUE 
  141    55 

推荐阅读