首页 > 解决方案 > 如何获得充满随机数的矩阵以排除负数?

问题描述

这里只是一个简单的问题:我创建了一个充满随机数的矩阵,其中每行总和为 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),但这不起作用。我错过了什么?

先感谢您。

标签: r

解决方案


那就先缩放吧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 函数的名称。


推荐阅读