LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

使用 C# 實現(xiàn)加權(quán)平均算法(含完整代碼與實現(xiàn)解析)

admin
2025年7月17日 22:4 本文熱度 308

今天我們討論一個數(shù)學問題“加權(quán)平均法”。

在數(shù)據(jù)分析、考試成績計算、統(tǒng)計學和金融等場景中,經(jīng)常會用到 加權(quán)平均(Weighted Average) 算法。相比簡單平均數(shù),加權(quán)平均數(shù)能根據(jù)不同數(shù)據(jù)的重要程度(權(quán)重)計算更準確的結(jié)果。

本文將一步步實現(xiàn)一個通用的 C# 加權(quán)平均數(shù)計算方法,附帶完整示例代碼,并解析每一處實現(xiàn)細節(jié),幫助我們舉一反三,靈活運用在實際項目中。

什么是加權(quán)平均?



簡單平均數(shù)公式是:

加權(quán)平均數(shù)公式是:

其中:

  •  是第 i 個數(shù)據(jù)值
  •  是對應(yīng)的權(quán)重
  •  是權(quán)重之和

C# 實現(xiàn)思路

核心思路:

  1. 1. 輸入兩組數(shù)據(jù):
    • ? 一組是待計算的值(如成績)
    • ? 一組是對應(yīng)的權(quán)重(如每門課占總成績的比例)
  2. 2. 驗證兩組數(shù)據(jù)長度一致。
  3. 3. 計算「值 * 權(quán)重」的加總。
  4. 4. 計算權(quán)重的總和。
  5. 5. 用加總除以權(quán)重總和,得到加權(quán)平均數(shù)。

完整示例代碼

下面是使用 C# 10 編寫的示例,兼容 .NET 6 及以上:

using System;
using System.Collections.Generic;
using System.Linq;

namespaceWeightedAverageDemo
{
    classProgram
    {
        static void Main(string[] args)
        {
            // 示例:3 門課程成績及其權(quán)重
            List<double> scores = new List<double> { 859278 };
            List<double> weights = new List<double> { 0.30.50.2 };

            double weightedAverage = CalculateWeightedAverage(scores, weights);

            Console.WriteLine($"加權(quán)平均成績:{weightedAverage:F2}");
        }

        /// <summary>
        /// 計算加權(quán)平均數(shù)
        /// </summary>
        /// <param name="values">值集合</param>
        /// <param name="weights">權(quán)重集合</param>
        /// <returns>加權(quán)平均數(shù)</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("值集合和權(quán)重集合的長度必須一致。");

            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("權(quán)重之和不能為零。");

            return weightedSum / weightSum;
        }
    }
}

代碼解析

  • List<double> scores 和 List<double> weights:用于存放數(shù)據(jù)值和對應(yīng)權(quán)重。
  • CalculateWeightedAverage 方法:
    • ? 驗證輸入:保證兩個列表長度一致,且不為空。
    • ? 用循環(huán)累加 值 * 權(quán)重,同時累加權(quán)重之和。
    • ? 除以權(quán)重之和得到結(jié)果。
  • Console.WriteLine 用 :F2 保留兩位小數(shù)輸出。

---

擴展:使用 LINQ 重寫

如果你想用更函數(shù)式的寫法,也可以用 LINQ:

static double CalculateWeightedAverageLinq(List<double> values, List<double> weights)
{
    if (values == null || weights == null)
        thrownew ArgumentNullException();

    if (values.Count != weights.Count)
        thrownew ArgumentException("值和權(quán)重長度必須一致。");

    double weightedSum = values.Zip(weights, (v, w) => v * w).Sum();
    double weightSum = weights.Sum();

    if (weightSum == 0)
        thrownew DivideByZeroException();

    return weightedSum / weightSum;
}

這里用到了:

  • Zip:把兩個列表一一配對。
  • Sum:求和。

適用場景舉例

  • ? 計算期末總成績(不同科目占比不同)
  • ? 統(tǒng)計某產(chǎn)品線不同產(chǎn)品對總銷售額的貢獻
  • ? 計算金融投資組合收益率

總結(jié)

本次內(nèi)容涵蓋以下關(guān)鍵點:

  • ? 加權(quán)平均數(shù)的概念解析與計算公式
  • ? C# 語言的具體實現(xiàn)方案
  • ? 采用 LINQ 的簡化編碼方式
  • ? 實際應(yīng)用場景分析

歡迎關(guān)注,我們后面繼續(xù)研究【移動加權(quán)平均算法】

參考內(nèi)容

百科-加權(quán)平均值

閱讀原文:原文鏈接


該文章在 2025/7/18 10:45:53 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲国产日韩欧美 | 亚洲AV第一成肉网在线观看 | 亚洲另类日韩国产综合 | 亚洲精品免费在线观看 | 亚洲国产精品综合久久久 | 五月天婷婷亚洲熟女一区 |