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

时间:2015-03-09 21:22:13

标签: matlab random statistics median

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

 array=generateNumbers(medianValue)

将返回具有中值= medianValue

的2D数组

有可能吗?

1 个答案:

答案 0 :(得分:3)

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

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

返回一个大小为m的随机矩阵,取自具有给定中位数的均匀分布。

这些数字是随机的,很难确定生成数字的实际中位数将等于给定的中位数值。

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

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

help rand中的相关命令指向Matlab中可用的其他发行版。