C#计算数组的算术平均数、几何平均数、调和平均数、平方平均数和中位数
1.函数实现
0)打印数组
/// <summary>
/// 打印数组
/// </summary>
/// <param name="arr">数组</param>
/// <param name="numberPerLine">每行打印元素数量</param>
/// <param name="digitAfterDot">小数点后保留位数</param>
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
/// <summary>
/// 计算算数平均数:(x1+x2+...+xn)/n
/// </summary>
/// <param name="arr">数组</param>
/// <returns>算术平均数</returns>
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)
/// <summary>
/// 几何平均数:(x1*x2*...*xn)^(1/n)
/// </summary>
/// <param name="arr">数组</param>
/// <returns>几何平均数</returns>
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))
/// <summary>
/// 调和平均数:n/((1/x1)+(1/x2)+...+(1/xn))
/// </summary>
/// <param name="arr">数组</param>
/// <returns>调和平均数</returns>
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)
/// <summary>
/// 平方平均数:((x1*x1+x2*x2+...+xn*xn)/n)^(1/2)
/// </summary>
/// <param name="arr">数组</param>
/// <returns>平方平均数</returns>
private static double RootMeanSquare(double[] arr)
{
    double temp = 0;
    foreach (double num in arr)
    {
        temp += (num * num);
    }
    return Math.Sqrt(temp / arr.Length);
}5)中位数
/// <summary>
/// 计算中位数
/// </summary>
/// <param name="arr">数组</param>
/// <returns></returns>
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.运行示例

C#计算数组的算术平均数、几何平均数、调和平均数、平方平均数和中位数的更多相关文章
- 你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题
		一.使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: ,,,,,}; int ... 
- JAVA 数组实例-求学生平均成绩,与计算数组的长度
		实例: 知识点:数组名.length是计算数组的长度 import java.util.*; //求学生平均分成绩 public class Test{ public static void main ... 
- 李洪强iOS开发之计算数组的最大最小值
		// // ViewController.m // A21 - 李洪强 - 输出参数 // // Created by vic fan on 16/7/3. // Copyright © 20 ... 
- PHP:第四章——PHP数组array_intersect计算数组交集
		<pre> <?php //array_intersect计算数组交集 header("Content-Type:text/html;charset=utf-8" ... 
- PHP:第四章——PHP数组array_diff计算数组差集
		<pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:array_diff — 计 ... 
- PHP array_diff 计算数组的差集
		array_diff (PHP 4 >= 4.0.1, PHP 5) array_diff — 计算数组的差集 说明 array array_diff ( array $array1 , arr ... 
- php计算数组相同值出现次数的代码(array_count_values)
		php计算数组相同值出现次数,可以使用php自带函数array_count_values : 说明 array array_count_values ( array $input )array_cou ... 
- 计算数组arr中所有元素的和
		<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ... 
- js计算数组中每个元素出现的次数
		计算数组中每个元素出现的次数 var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var countedNames = names.redu ... 
随机推荐
- SpringBoot——项目启动时读取配置及初始化资源
			介绍 在开发过程中,我们有时候会遇到非接口调用而出发程序执行任务的一些场景,比如我们使用quartz定时框架通过配置文件来启动定时任务时,或者一些初始化资源场景等触发的任务执行场景. 方法一:注解 ... 
- 痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP
			大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列ROM中的FlexSPI驱动API实现IAP. 痞子衡的技术交流群里经常有群友提问: i.MXRT中的FlexSPI驱动 ... 
- day12—列表、元组、字典基本语法
			一.list类中提供的方法 **********************灰魔法************************** 1. 原来值最后追加 append() li = [11, 22, ... 
- C# wpf 实现 MD5加密解密 小工具
			源文件: http://pan.baidu.com/share/link?shareid=2038099474&uk=3912660076 MD5 C# 实现代码来源于网络,感谢原系作者! 参 ... 
- web页面弹出遮罩层,通过js或css禁止蒙层底部页面跟随滚动
			场景概述 弹窗是一种常见的交互方式,而蒙层是弹窗必不可少的元素,用于隔断页面与弹窗区块,暂时阻断页面的交互.但是,在蒙层元素中滑动的时候,滑到内容的尽头时,再继续滑动,蒙层底部的页面会开始滚动,显然这 ... 
- 确定比赛名次 UDU-1285 + 逃生 UDU 4857 拓扑排序(找不同)
			确定比赛名次 题目大意 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得 ... 
- POJ3040贪心
			题意:作为创纪录的牛奶生产的奖励,农场主约翰决定开始给Bessie奶牛一个小的每周津贴.FJ有一套硬币N种(1≤N≤20)不同的面额,每枚硬币是所有比他小的硬币面值的倍数,例如1美分硬币.5美分硬币. ... 
- shell进阶篇之字典和数组结合应用案例
			# 现在我们用字典结合数组来实现一个简单的远程管理机 远程管理机的需求:现在需要在一个管理机上实现下列两点内容: 1.需要可以实时查看现有项目运行状态 2.远程登陆任意一台机器 备注:现有的机器如下 ... 
- 02 Vue指令
			Vue指令 1.文本相关指令 <div id="app"> <!-- 插值表达式 --> <p>{{ msg }}</p> < ... 
- 攻防世界FlatScience
			访问robots.txt发现 admin.php和login.php 在admin.php和login.php分别尝试注入 发现login.php页面存在注入,并且根据报错得知数据库类型为sqlite ... 
