求标准差算法

《代码本色》是本好书,很有意思,最近一直慢慢研读,速度很慢,一边看一边练习。其中的算法和一些小实例在做Demo。最近简单用TypeScript实现了标准差和向量类,这些都在Egret中没有提供的基础功能。后续整理一下相关算法,放到github大家自取。目前还没整理,先把标准差的封装放在下面。

module mebiuslib
{
    export class Sigma
    {
        //平均值
        static Mean(val:number[]):number
        {
            var mean:number = 0;
            var n:number = val.length;
            var t:number = 0;
            for(var i:number=0; i<n; i++)
            {
                t += val[i];
            }
            mean = t/n;
            return mean;
        }

        //标准差
        static Sigma(val:number[]):number
        {
            var mean:number = Sigma.Mean(val);
            var n:number = val.length;
            var t:number = 0;
            for(var i:number=0; i<n; i++)
            {
                var q:number = val[i]-mean;
                q = q*q;
                t += q;
            }

            var sigma:number = Math.sqrt(t/n);
            return sigma;
        }
    }
}

算法很简单,如图

使用的时候像下面这样就OK了!

class Main extends egret.DisplayObjectContainer {


    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }

    private onAddToStage(event:egret.Event) {
        var num:number[] = [85,82,88,86,85,93,98,40,73,83];
        console.log(mebiuslib.MebiusMath.Mean(num));
        console.log(mebiuslib.MebiusMath.Sigma(num));

    }


}