我一直在試圖創建一個小的方法來計算從seq給定的百分位數。它幾乎可以工作。問題是我不知道爲什麼不起作用。我希望你的一個「比我聰明」的人能夠幫助我。百分位數計算器
我希望得到的結果是,它會返回來自seq的n個起始項小於等於返回值的項。
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)
}
因此,例如,如果我有
val v = Vector(7, 34, 39, 18, 16, 17, 21, 36, 17, 2, 4, 39, 4, 19, 2, 12, 35, 13, 40, 37)
和我打電話給我的函數percentile(11)(v)
返回值是2。然而,載體的10%的小於2或者等於,而不是11%等我我在打電話。 percentile(11)(v)
應該返回4.
你是什麼意思,「它的作品幾乎......它不工作」?這應該是一個謎題?如果您遇到錯誤,請提供錯誤! – eliasah
沒有錯誤,但返回有時是不正確的 –