博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#计算数组的算术平均数、几何平均数、调和平均数、平方平均数和中位数
阅读量:6161 次
发布时间:2019-06-21

本文共 3175 字,大约阅读时间需要 10 分钟。

hot3.png

1.函数实现

0)打印数组

/// /// 打印数组/// /// 数组/// 每行打印元素数量/// 小数点后保留位数private static void PrintArray(double[] arr, int numberPerLine = 7, int digitAfterDot = 2){    //设定小数点后保留位数(函数ToString()的参数)    string format = "#0.";    while (true)    {        if (digitAfterDot <= 0) break;        format += '0';        digitAfterDot--;    }    //打印数组    for (int i = 0; i < (arr.Length - 1) / numberPerLine + 1; i++)    {        for (int j = 0; j < numberPerLine; j++)        {            int index = i * numberPerLine + j;            if (index < arr.Length)            {                Console.Write(arr[index].ToString(format) + "\t");            }        }        Console.WriteLine();    }}

1)算术平均数:(x1+x2+...+xn)/n

/// /// 计算算数平均数:(x1+x2+...+xn)/n/// /// 数组/// 
算术平均数
private static double ArithmeticMean(double[] arr){ double result = 0; foreach (double num in arr) { result += num; } return result / arr.Length;}

2)几何平均数:(x1*x2*...*xn)^(1/n)

/// /// 几何平均数:(x1*x2*...*xn)^(1/n)/// /// 数组/// 
几何平均数
private static double GeometricMean(double[] arr){ double result = 1; foreach (double num in arr) { result *= Math.Pow(num, 1.0 / arr.Length); } return result;}

3)调和平均数:n/((1/x1)+(1/x2)+...+(1/xn))

/// /// 调和平均数:n/((1/x1)+(1/x2)+...+(1/xn))/// /// 数组/// 
调和平均数
private static double HarmonicMean(double[] arr){ double temp = 0; foreach (double num in arr) { temp += (1.0 / num); } return arr.Length / temp;}

4)平方平均数:((x1*x1+x2*x2+...+xn*xn)/n)^(1/2)

/// /// 平方平均数:((x1*x1+x2*x2+...+xn*xn)/n)^(1/2)/// /// 数组/// 
平方平均数
private static double RootMeanSquare(double[] arr){ double temp = 0; foreach (double num in arr) { temp += (num * num); } return Math.Sqrt(temp / arr.Length);}

5)中位数

/// /// 计算中位数/// /// 数组/// 
private static double Median(double[] arr){ //为了不修改arr值,对数组的计算和修改在tempArr数组中进行 double[] tempArr = new double[arr.Length]; arr.CopyTo(tempArr, 0); //对数组进行排序 double temp; for (int i = 0; i < tempArr.Length; i++) { for (int j = i; j < tempArr.Length; j++) { if (tempArr[i] > tempArr[j]) { temp = tempArr[i]; tempArr[i] = tempArr[j]; tempArr[j] = temp; } } } //针对数组元素的奇偶分类讨论 if (tempArr.Length % 2 != 0) { return tempArr[arr.Length / 2 + 1]; } else { return (tempArr[tempArr.Length / 2] + tempArr[tempArr.Length / 2 + 1]) / 2.0; }}

2.Main函数调用

static void Main(string[] args){    //一个数组    double[] arr = new double[]     {        3, 2, 7, 4, 8, 8, 5,        5, 6, 5, 1, 8, 4, 9    };    //打印数组    PrintArray(arr);    //调和平均数≤几何平均数≤算术平均数≤平方平均数    Console.WriteLine("算术平均数:" + ArithmeticMean(arr).ToString("#0.000"));    Console.WriteLine("几何平均数:" + GeometricMean(arr).ToString("#0.000"));    Console.WriteLine("调和平均数:" + HarmonicMean(arr).ToString("#0.000"));    Console.WriteLine("平方平均数:" + RootMeanSquare(arr).ToString("#0.000"));    Console.WriteLine("中位数:" + Median(arr).ToString("#0.000"));    Console.ReadLine();}

3.运行示例

162430_WJmA_1425762.png

转载于:https://my.oschina.net/Tsybius2014/blog/227533

你可能感兴趣的文章
检测oracle数据库坏块的方法
查看>>
SQL server 安装教程
查看>>
Linux下ftp和ssh详解
查看>>
跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
查看>>
js时间和时间戳之间如何转换(汇总)
查看>>
js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用
查看>>
java中string和int的相互转换
查看>>
P1666 前缀单词
查看>>
HTML.2文本
查看>>
Ubuntu unity安装Indicator-Multiload
查看>>
解决Eclipse中新建jsp文件ISO8859-1 编码问题
查看>>
7.对象创建型模式-总结
查看>>
【论文阅读】Classification of breast cancer histology images using transfer learning
查看>>
移动端处理图片懒加载
查看>>
jQuery.on() 函数详解
查看>>
谈缓存和Redis
查看>>
【转】百度地图api,根据多点注标坐标范围计算地图缩放级别zoom自适应地图
查看>>
用户调研(补)
查看>>
ExtJS之开篇:我来了
查看>>
☆1018
查看>>