百分位数计算我想在C#(或一些伪代码)中模仿Excel等价的PERCENTILE函数。我怎样才能做到这一点?该函数应采用两个参数,其中第一个是值列表,第二个是函数应计算的百分位数。坦克!编辑:如果我的问题像我自己没有尝试过的那样发生,我很抱歉。我只是不明白excel函数是如何工作的(是的,我首先尝试了wikipedia和wolfram)并且我认为如果有人在代码中提出它我会更好地理解。@CodeInChaos给出的答案似乎正是我所追求的。我认为维基百科页面有你需要编写自己的函数的公式......我试过这个:publicdoublePercentile(double[]sequence,doubleexcelPercentile){intN=sequence.Length;双n=(N-1)*excelPercentile+1;//另一种方法:doublen=(N+1)*excelPercentile;如果(n==1d)返回序列[0];elseif(n==N)返回序列[N-1];否则{intk=(int)n;双d=n-k;返回序列[k-1]+d*(序列[k]-序列[k-1]);}}在CodeInChaos评论后编辑:Excel使用0到1之间的百分位值(因此我更改了我的代码以为此使用维基百科公式)和另一种计算n的方法(因此我更改了注释方法)。尝试在以下网址重现结果:http://www.techonthenet.com/excel/formulas/percentile.php我想出了:publicstaticdoublePercentile(IEnumerableseq,doublepercentile){varelements=seq.ToArray();数组排序(元素);双realIndex=百分位数*(元素。长度-1);intindex=(int)realIndex;双frac=realIndex-索引;if(index+1(不处理NaN和无穷大)。一些测试用例:Percentile(newdouble[]{1,2,3,4},0.8).Dump();//3.4Percentile(newdouble[]{7,8,9,20},0.35).Dump();//8.05Percentile(newdouble[]{1,2,3,4},0.3).Dump();//1.9添加值对列表,对列表进行排序,得到索引值ceil(列表的长度*百分位数)以上就是C#学习教程:百分位数计算分享的全部内容,不代表一个位置,如果涉及侵权,请点击维权联系管理员删除,如需转载请注明出处:
