/// <summary> /// 提供正态分布的数据和图片 /// </summary> public class StandardDistribution { /// <summary> /// 样本数据 /// </summary> public List<double> Xs { get; private set; } public StandardDistribution(List<double> Xs) { this.Xs = Xs; Average = Xs.Average(); Variance = GetVariance(Xs); if (Variance == 0) throw new Exception("方差为0");//此时不需要统计 因为每个样本数据都相同,可以在界面做相应提示 StandardVariance = Math.Sqrt(Variance); } /// <summary> /// 方差/标准方差的平方 /// </summary> public double Variance { get; private set; } /// <summary> /// 标准方差 /// </summary> public double StandardVariance { get; private set; } /// <summary> /// 算数平均值/数学期望 /// </summary> public double Average { get; private set; } /// <summary> /// 1/ (2π的平方根)的值 /// </summary> public static double InverseSqrt2PI = 1 / Math.Sqrt(2 * Math.PI); /// <summary> /// 获取指定X值的Y值 计算正太分布的公式 /// </summary> /// <param name="x"></param> /// <returns></returns> public double GetGaussianDistributionY(double x) { double PowOfE = -(Math.Pow(Math.Abs(x - Average), 2) / (2 * Variance)); double result = (StandardDistribution.InverseSqrt2PI / StandardVariance) * Math.Pow(Math.E, PowOfE); return result; } /// <summary> /// 获取正太分布的坐标<x,y> /// </summary> /// <returns></returns> public List<Tuple<double, double>> GetGaussianDistributionYs() { List
c# 画正态分布图
最新推荐文章于 2024-05-30 11:12:12 发布