C# NormalDistribution发生器

来源:互联网 发布:淘宝优惠券的使用规则 编辑:程序博客网 时间:2024/06/08 20:41

最近项目需要将matlab代码移到手机上去,matlab代码非常简单的函数,在C#中没有对应的函数,比如正态发生器,上网找了很多,最后发现一种方法不错,而且挺高效,代码如下:

    class NormalDistribution    {        public double Mu { get; set; }        public double Sigma { get; set; }        private Random rand;        public double NextDouble()        {            double u1 = rand.NextDouble(); //these are uniform(0,1) random doubles             double u2 = rand.NextDouble();            double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2); //random normal(0,1)             double randNormal = Mu + Sigma * randStdNormal; //random normal(mean,stdDev^2)            return randNormal;        }                public NormalDistribution()        {            rand = new Random((int)DateTime.UtcNow.Ticks);        }    }

原创粉丝点击