如何获得充满随机数的矩阵以排除负数?

时间:2019-06-05 19:45:52

标签: r

在这里只是一个简单的问题:我创建了一个充满随机数的矩阵,其中每一行的总和为100。但是,它包含负数。我希望它使矩阵在每行中仅包含0到100之间的正数。

我尝试了以下功能:

matrix <- t(replicate(30,{x <- runif(3, 0, 50); y <- c(x, 100 - sum(x)); sample(y/sum(y) * 100)}))

我尝试更改最小值,现在应该等于0(最大值为50),但这没有用。我想念什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

先缩放然后再sample

mat <- t(replicate(30, {
  x <- runif(4, 0, 50)
  sample(x/sum(x) * 100)
  }))

any(mat < 0)
#[1] FALSE

all(rowSums(mat) == 100)
#[1] TRUE

我将矩阵名称更改为mat,因为matrix是基本R函数的名称。

相关问题