小编Sel*_*ill的帖子

百分位数计算器

我一直在尝试创建一个小方法来计算seq中给定的百分位数.它几乎可以工作.问题是我不知道为什么不起作用.我希望你的一个"比我更聪明"的人可以帮助我.

我希望结果是它将从seq中返回seq的项目小于等于返回值的项目.

def percentile[Int](p: Int)(seq: Seq[Int]) = {
  require(0 <= p && p <= 100)                      // some value requirements
  require(!seq.isEmpty)                            // more value requirements
  val sorted = seq.sorted
  val k = math.ceil((seq.length - 1) * (p / 100)).toInt
  return sorted(k)
}
Run Code Online (Sandbox Code Playgroud)

所以,例如,如果我有

val v = Vector(7, 34, 39, 18, 16, 17, 21, 36, 17, 2, 4, 39, 4, 19, 2, 12, 35, 13, 40, 37)
Run Code Online (Sandbox Code Playgroud)

我调用我的函数percentile(11)(v)返回值为2.但是,10%的向量小于或等于2,而不是像我调用的11%.percentile(11)(v)应该返回4.

scala percentile

3
推荐指数
1
解决办法
3559
查看次数

标签 统计

percentile ×1

scala ×1