gpt4 book ai didi

scala - 百分位数计算器

转载 作者:行者123 更新时间:2023-12-02 20:11:55 25 4
gpt4 key购买 nike

我一直在尝试创建一个小方法来从序列中计算给定的百分位数。它有效..几乎。问题是我不知道为什么不起作用。我希望你们中的一位比我“聪明一点”的人能够帮助我。

我希望的结果是它会从 seq 中返回 seq 的 n procent 小于等于返回值的项。

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。

最佳答案

您的错误在这一行:

 val k = math.ceil((seq.length - 1) * (p / 100)).toInt

尤其是这里:p/100。作为 p 一个 Int <= 100 且 >= 0,p/100 将始终等于 0 或 1(如果 p == 100 )。如果您想要浮点结果,则必须将两个值之一加宽:p/100.0

 val k = math.ceil((seq.length - 1) * (p / 100.0)).toInt

附注:您不需要 [Int] 类型参数

关于scala - 百分位数计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36479891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com