c# - 如何计算集合中值的百分位数或排名?

标签 c# xml linq algorithm percentile

我在一个 XML 文件中收集了大约 8,000 个测试分数。 使用 Linq 和 C#,计算特定测试分数的百分位数的最有效方法之一是什么。

我强调的是效率。那么推荐的方法是什么?我也在寻找为此计算推荐的合适的内置 Linq 或 C# 函数。有没有叫做 Percentile() 或 TopPercent 的东西?

最佳答案

这听起来像是在确认您需要担心效率之前担心效率。

我会采取以下方法:

  • 使用 LINQ to XML(作为 .NET 中最简单的 XML API)将 XML 文件加载到内存中
  • 将分数转换为整数列表(或任何分数类型)
  • 您现在可以轻松找出总数
  • Count 与谓词一起使用,找出有多少分数低于您的“目标”分数

如果您需要检查多个分数,您显然需要重复最后一步。

第一次尝试对此进行优化(用于多次检查)是对列表进行排序,这样您就可以进行二进制搜索以找到每个分数的排名。不过,我只会在基准测试之后那个

关于c# - 如何计算集合中值的百分位数或排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9147889/

相关文章:

C#/XML : Change/Replace data from an XML file via textbox

iphone - 在iPhone上保存/解析XML的最佳方法

ruby - 在 Ruby 中规范化 XML

c# - 循环删除列表中的多个项目...c#

asp.net - 使用 LINQ 连接 2 个列表?

c# - 如何在 C# 中添加页眉和页脚 txt 文件?

c# - 如何创建包含 IPv4 地址的文本框?

c# - 当您只想更改返回类型时重载方法的最佳方法

c# - 在 ASP.NET 上流式传输 MP3 block

c# - "fix" "dynamic"IEnumerable 是否有规范的方法?