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 ...
随机推荐
- 尚学堂 213_尚学堂_高淇_java300集最全视频教程_反射机制_提高反射效率_操作泛型_操作注解_合并文件.mp4
在反射的时候如果去掉了安全性检测机制,能够大大的提高反射的执行效率,我们来看下面的代码进行比较 package com.bjsxt.test; import java.lang.reflect.Met ...
- 当我们创建HashMap时,底层到底做了什么?
jdk1.7中的底层实现过程(底层基于数组+链表) 在我们new HashMap()时,底层创建了默认长度为16的一维数组Entry[ ] table.当我们调用map.put(key1,value1 ...
- 入门大数据---HBase Shell命令操作
学习方法 可以参考官方文档的简单示例来 点击查看 可以直接在控制台使用help命令查看 例如直接使用help命令: 从上图可以看到,表结构的操作,表数据的操作都展示了.接下来我们可以针对具体的命令使用 ...
- Python实用笔记 (23)面向对象高级编程——使用__slots__
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: class Student(object): pa ...
- angular弹出对话框结构
angular dialog标准结构,注意有checkbox时,需要外包一层div,checkbox-wrapper类的这个样式控制了不显示滚动条.
- 每天一个Linux命令(cd)
cd cd的详细信息 cd:不是程序,跳转当前路径(只能跳转当前路径一下的路径,若是其他路径,要写完整路径) 语法:cd [目录文件] ...
- Layui的分页模块在网站中的应用
制作网站的时候,有时候我们常常会被一些要求复杂的分页给困住,最后要么就是写一个简单的分页,要么就做成瀑布流的形式. 有了Layui之后,我认为开发人员多了一个选择,那就是尝试用Layui内置的分页模块 ...
- 关于渐进式 Web 应用,你应该知道的一切
渐进式 Web 应用是利用现代浏览器的特性,可以添加到主屏幕上,表现得像原生应用程序一样的 Web 应用程序. 什么是渐进式 Web 应用 渐进式 Web 应用(PWA)本质上与普通的网站没有什么不同 ...
- 关于gulp复制文件时把整个目录结构都复制的问题解决
有这么个场景,在开发时分模块开发,但是发布时不一定将按模块分布,比如,为了便于开发,图片是按照模块存放的,但是发布时只是放在images文件夹下,此时就需要用到本文中提到的插件gulp-flatten ...
- centos彻底删除文件夹创建文件
centos彻底删除文件夹.文件命令(centos 新建.删除.移动.复制等命令: 1.新建文件夹 mkdir 文件名 新建一个名为test的文件夹在home下 view source1 mkdir ...