【问题标题】:Generate random numbers with pre-defined median in Matlab ?在 Matlab 中生成具有预定义中位数的随机数?
【发布时间】:2015-05-11 04:45:57
【问题描述】:

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

 array=generateNumbers(medianValue)

将返回中值 = 中值的二维数组

有可能吗?

【问题讨论】:

  • 您可能可以查看此帖子以查看算法:stackoverflow.com/questions/8373200/generate-numbers-in-r
  • 你想要正态分布还是均匀分布的数字(或其他)?你在乎平均值吗?数字可以是负数吗?你想要什么界限(或者你想要没有界限)? Esteban 的建议应该会有所帮助,但如果不是,您需要回答这些问题,以便获得任何答案。
  • @Esteban 谢谢。这就是我要找的。​​span>

标签: matlab random statistics median


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 嗯。这会生成理论预期(平均值)为median 的伪随机数,但它并没有真正生成具有预定义中位数的数字。我建议向 OP 澄清这一点,并可能重写他的问题以匹配答案,因为他似乎对此感到满意,但目前这回答了一个不同的问题。
  • 感谢您的建议。我选择扩展答案,以便同时提供这两个方面。
  • 好的。我想简单地改变原来的问题,但这更好。 ;-)
猜你喜欢
  • 2018-04-16
  • 2012-10-21
  • 2012-12-04
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 2018-02-21
  • 2010-12-25
相关资源
最近更新 更多