我想用C#(或用一些伪代码)模仿Excel等效的PERCENTILE函数。我怎样才能做到这一点?该函数应带有两个参数,第一个是值列表,第二个是函数应计算的百分位数。
C#
坦克!
编辑: 很抱歉,如果我遇到自己未曾尝试过的问题。我只是不明白excel函数是如何工作的(是的,我先尝试了Wikipedia和Wolfram),我想如果有人用代码展示它,我会更好地理解它。@CodeInChaos给出的答案似乎就是我所追求的。
我认为Wikipedia页面包含您需要编写自己的函数的公式… 我尝试过此操作:
public double Percentile(double[] sequence, double excelPercentile) { Array.Sort(sequence); int N = sequence.Length; double n = (N - 1) * excelPercentile + 1; // Another method: double n = (N + 1) * excelPercentile; if (n == 1d) return sequence[0]; else if (n == N) return sequence[N - 1]; else { int k = (int)n; double d = n - k; return sequence[k - 1] + d * (sequence[k] - sequence[k - 1]); } }
在CodeInChaos注释之后进行编辑: Excel使用0到1之间的百分位值(因此我更改了代码以使用Wikipedia公式实现此值),并使用另一种方法来计算n(因此我更改了注释的值)。