使用 C# 实现加权平均算法(含完整代码与实现解析)
|
admin
2025年7月17日 22:4
本文热度 16
|
今天我们讨论一个数学问题“加权平均法”。
在数据分析、考试成绩计算、统计学和金融等场景中,经常会用到 加权平均(Weighted Average) 算法。相比简单平均数,加权平均数能根据不同数据的重要程度(权重)计算更准确的结果。
本文将一步步实现一个通用的 C# 加权平均数计算方法,附带完整示例代码,并解析每一处实现细节,帮助我们举一反三,灵活运用在实际项目中。
什么是加权平均?

加权平均数公式是:
其中:
C# 实现思路
核心思路:
完整示例代码
下面是使用 C# 10 编写的示例,兼容 .NET 6 及以上:
using System;
using System.Collections.Generic;
using System.Linq;
namespaceWeightedAverageDemo
{
classProgram
{
static void Main(string[] args)
{
// 示例:3 门课程成绩及其权重
List<double> scores = new List<double> { 85, 92, 78 };
List<double> weights = new List<double> { 0.3, 0.5, 0.2 };
double weightedAverage = CalculateWeightedAverage(scores, weights);
Console.WriteLine($"加权平均成绩:{weightedAverage:F2}");
}
/// <summary>
/// 计算加权平均数
/// </summary>
/// <param name="values">值集合</param>
/// <param name="weights">权重集合</param>
/// <returns>加权平均数</returns>
static double CalculateWeightedAverage(List<double> values, List<double> weights)
{
if (values == null || weights == null)
thrownew ArgumentNullException("values 和 weights 不能为空。");
if (values.Count != weights.Count)
thrownew ArgumentException("值集合和权重集合的长度必须一致。");
double weightedSum = 0;
double weightSum = 0;
for (int i = 0; i < values.Count; i++)
{
weightedSum += values[i] * weights[i];
weightSum += weights[i];
}
if (weightSum == 0)
thrownew DivideByZeroException("权重之和不能为零。");
return weightedSum / weightSum;
}
}
}
代码解析
- •
List<double> scores
和 List<double> weights
:用于存放数据值和对应权重。 - •
CalculateWeightedAverage
方法: - •
Console.WriteLine
用 :F2
保留两位小数输出。
---
扩展:使用 LINQ 重写
如果你想用更函数式的写法,也可以用 LINQ:
static double CalculateWeightedAverageLinq(List<double> values, List<double> weights)
{
if (values == null || weights == null)
thrownew ArgumentNullException();
if (values.Count != weights.Count)
thrownew ArgumentException("值和权重长度必须一致。");
double weightedSum = values.Zip(weights, (v, w) => v * w).Sum();
double weightSum = weights.Sum();
if (weightSum == 0)
thrownew DivideByZeroException();
return weightedSum / weightSum;
}
这里用到了:
适用场景举例
总结
本次内容涵盖以下关键点:
欢迎关注,我们后面继续研究【移动加权平均算法】
参考内容
百科-加权平均值
阅读原文:原文链接
该文章在 2025/7/18 10:45:53 编辑过