groovy 如何找到90%的价值?

q9yhzks0  于 2023-06-21  发布在  其他
关注(0)|答案(2)|浏览(128)

我有这个清单:

def grades = [5,4,3,2,1,1]

其中,index是等级,value是等级的具体值:
| 等级|发生率|
| - -----|- -----|
| 0| 5个|
| 1| 4|
| 2| 3|
| 3| 2|
| 4| 1|
| 5个|1|
如何计算成绩的第90百分位数?

7eumitmz

7eumitmz1#

这让我得到一个完整的等级。我希望能找到90百分位数的精确值,但这对我来说就够了。

def grades = [5,4,3,2,1,1]

sum=grades.sum()

per_grade=0
per_value=sum*0.9
 grades.eachWithIndex { grade_count, grade ->
  per_value-=grade_count
   if (per_value<0){per_grade=grade-1}
   if (per_value==0){per_grade=grade}
 }
out.write(per_grade)
bxgwgixi

bxgwgixi2#

如果我没有理解错的话,一共有16个等级(5 + 4 + 3 + 2 + 1 + 1 = 16)。90%是14. 4个等级,所以丢弃最低的14个等级,取剩下的最小的(在你的例子中会是4)。
如何编码?有一些方法:
1.你可以通过你得到的数组来计数。14减去5(= 9),然后是4,然后是3,然后是2。一旦你达到零,你就在第90百分位的指数上。
1.也许更容易理解,但需要更多的代码行:将所有16个等级放入数组(或列表)中:[0,0,0,0,0,1,1,1,2,2,3,3,4,5]。由于数组是排序的,因此在索引14处找到中值。
我相信你会从自己编写代码中学到最多的东西,所以我不会从你身上拿走这种乐趣或学习。

相关问题