在 Matlab 中生成具有预定义中位数的随机数?

Generate random numbers with pre-defined median in Matlab ?

我正在寻找任何函数或方法来创建二维随机数数组,其中值预定义如下:

 array=generateNumbers(medianValue)

将 return 二维数组中值 = medianValue

可能吗?

Matlab 函数rand 生成在区间[0,1] 上均匀分布的(伪)随机数。此分布的中位数为 0.5。您可以通过向每个数字添加 m-0.5 来使中位数为 m。函数

function array = generateNumbers(m, n, medianValue)
  array = rand(m,n)-0.5 + medianValue;
end

returns 大小为 m x n 的随机矩阵,取自具有给定中位数的均匀分布。

数字是随机的,不能确定生成数字的实际中位数是否等于给定的中位数。

要确定所选数字的特定中位数,您可以执行以下操作:

function array = generateNumbers(m, n, medianValue)
  array = rand(m,n);
  array = array - median(array(:)) + medianValue;
end

help rand中的相关命令指向 Matlab 中可用的其他分布。