在R中,如何生成N个平均值为X、中位数为Y(至少接近)的数字。
或者更一般地说,是否有一个算法可以实现这一点?
有无限多个解决方案。
近似算法:
- 生成低于中位数的 n/2 个数字
- 生成高于中位数的 n/2 个数字
- 添加您想要的中位数并检查
- 添加一个具有足够权重的数字来满足你的平均值——你可以解决这个问题
假设您想要中位数为零且平均值为二十的示例:
R> set.seed(42)
R> lo <- rnorm(10, -10); hi <- rnorm(10, 10)
R> median(c(lo,0,hi))
[1] 0 # this meets our first criterion
R> 22*20 - sum(c(lo,0,hi)) # (n+1)*desiredMean - currentSum
[1] 436.162 # so if we insert this, we the right answer
R> mean(c(lo,0,hi,22*20 - sum(c(lo,0,hi))))
[1] 20 # so we meet criterion two
R>
因为desiredMean times (n+1)
必须等于sum(currentSet) + x
所以我们解决x
得到上面的表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)