来自Ruby Wilson的C#得分

任何人都可以帮助我将其转换为C#.这实际上伤害了我的大脑.

http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

require 'statistics2'

def ci_lower_bound(pos,n,power)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-power/2)
    phat = 1.0*pos/n
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end

这是什么意思?

Statistics2.pnormaldist(1-power/2)

解决方法

如果有人有兴趣……

做更多关于pnormaldist的谷歌搜索引导我到这个stackoverflow artice:Objective-C implementation of the Wilson Score Interval

我将这个目标-c转换为C#,并且完全未经测试

public class Wilsonscore
{
    private static double pnormaldist(double qn)
    {
        double[] b = { 1.570796288,0.03706987906,-0.8364353589e-3,-0.2250947176e-3,0.6841218299e-5,0.5824238515e-5,-0.104527497e-5,0.8360937017e-7,-0.3231081277e-8,0.3657763036e-10,0.6936233982e-12 };

        if (qn < 0.0 || 1.0 < qn)
            return 0.0;

        if (qn == 0.5)
            return 0.0;

        double w1 = qn;
        if (qn > 0.5)
            w1 = 1.0 - w1;
        double w3 = -Math.Log(4.0 * w1 * (1.0 - w1));
        w1 = b[0];
        int i = 1;
        for (; i < 11; i++)
            w1 += b[i] * Math.Pow(w3,i);

        if (qn > 0.5)
            return Math.Sqrt(w1 * w3);
        return -Math.Sqrt(w1 * w3);
    }

    public static double ci_lower_bound(int pos,int n,double power)
    {
        if (n == 0)
            return 0.0;
        double z = pnormaldist(1 - power / 2);
        double phat = 1.0 * pos / n;
        return (phat + z * z / (2 * n) - z * Math.Sqrt((phat * (1 - phat) + z * z / (4 * n)) / n)) / (1 + z * z / n);
    }
}

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...