カテゴリ別の加重平均成績を計算
この加重平均計算ツールは、各成績カテゴリを相対的な重要度に応じてまとめます。宿題、プロジェクト、試験、授業参加などについて、百分率の得点と重みを入力してください。各得点と重みを掛け、その積を合計して重みの総計で割ります。重みは自動的に正規化されるため、合計は100、1、20など、任意の正の値で構いません。最終平均に加え、カテゴリごとの寄与も返されるため、式の確認、成績の説明、教育業務への組み込みにご利用いただけます。
無料で実行
カテゴリごとの得点と一貫した重みを入力します
総合成績に含めるカテゴリごとに1行を作成してください。分かりやすい名前、0から100までの百分率による得点、0以上の重みを入力します。たとえば、宿題を20、プロジェクトを35、試験を45に設定できます。この例では合計が100ですが、100にする必要はありません。比率だけが計算に影響するため、2、3.5、4.5でも同じ平均になります。0.2、0.35、0.45のような小数も使用できます。ただし、1件のリクエスト内では同じ尺度をお使いください。20と0.35を混在させると、通常は意図と異なる比率になります。得点はあらかじめ百分率に変換し、50点満点中42点なら84と入力してください。重みが0のカテゴリは平均に影響しませんが、内訳には残せます。少なくとも1つの重みを正の値にする必要があり、1件につき最大100カテゴリまで処理できます。
加重平均の計算式を確認します
標準的な加重平均の式を使用します。各得点に重みを掛け、すべての積を合計し、その加重合計を重みの総計で割ります。宿題の得点が88で重みが20、プロジェクトが94と35、試験が81と45なら、割り算の前に各積を合計します。そのため、重みが大きいカテゴリほど最終結果への影響も大きくなります。レスポンスには加重合計と重みの総計が含まれ、主要な式を再現できます。また、各カテゴリについて、全体に占める小数比率としての正規化済み重みと、成績ポイントへの加重寄与も示します。寄与の合計は、6桁目での丸めによるわずかな差を除き、表示された平均と一致します。実際の重み総計で割ることで正規化されるため、重みを強制的に100へ変更することはありません。無効な数値、負の重み、範囲外の得点、空の名前、重み総計0は、誤解を招く成績ではなく入力エラーになります。
結果を解釈して検証します
送信したカテゴリ全体の百分率としてweighted_averageをご利用ください。カテゴリ一覧は入力順を保ち、normalized_weightとweighted_contributionを追加するため、各行が結果に与えた影響を正確に確認できます。宿題が高得点でも低い試験結果を補えなかった理由を学習者へ説明するときや、学習管理システムがシラバスの重みを正しく適用しているかを教員が確認するときに役立ちます。このツールは文字評価の付与、得点分布の調整、最低点の除外、未提出課題の補完、重み合計100の強制を行いません。これらは評価方針に関する判断です。完了済みカテゴリだけに現在の重みが設定されている場合、完了分のみで正規化するか、未完了カテゴリを得点0として含めるかをご判断ください。どちらも数学的には有効ですが結果は異なります。アルゴリズムは決定的で、ネットワークサービスを使わず、返却する数値を小数点以下6桁に丸めます。同じ有効な入力なら、ブラウザでもAPIでも同じ構造化結果が得られます。
活用例
現在の履修成績を確認します
シラバスに示されたカテゴリ重みに従い、宿題、小テスト、プロジェクト、試験をまとめます。
成績簿の計算を監査します
学習管理システムの結果を、加重合計、重み総計、カテゴリ別寄与の明細と比較します。
教育レポートを自動化します
学習者ごとの表計算式を管理せず、一貫した加重平均をレポート処理で算出します。
よくある質問
APIリクエストの料金はいくらですか?
APIリクエスト1件の料金は$0.002です。ティアAの計算ツールはブラウザでも実行できます。
重みの合計を100にする必要がありますか?
いいえ。加重合計を実際の重み総計で割るため、一貫した0以上の尺度なら使用できます。
小数の重みを使用できますか?
はい。0.2、0.35、0.45は、20、35、45と同じ平均になります。
重みが0のカテゴリはどうなりますか?
内訳には残りますが、最終平均には寄与しません。少なくとも1つの重みを正にしてください。
文字による成績評価も付与されますか?
いいえ。評価境界は教育機関や科目ごとに異なるため、加重百分率のみを返します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/edu/weighted-grade-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"categories":[{"name":"Homework","score":88,"weight":20},{"name":"Projects","score":94,"weight":35},{"name":"Exams","score":81,"weight":45}]}'const res = await fetch("https://api.kit.forhosting.com/edu/weighted-grade-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"categories": [
{
"name": "Homework",
"score": 88,
"weight": 20
},
{
"name": "Projects",
"score": 94,
"weight": 35
},
{
"name": "Exams",
"score": 81,
"weight": 45
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/weighted-grade-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"categories": [
{
"name": "Homework",
"score": 88,
"weight": 20
},
{
"name": "Projects",
"score": 94,
"weight": 35
},
{
"name": "Exams",
"score": 81,
"weight": 45
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/weighted-grade-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"categories":[{"name":"Homework","score":88,"weight":20},{"name":"Projects","score":94,"weight":35},{"name":"Exams","score":81,"weight":45}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"categories":[{"name":"Homework","score":88,"weight":20},{"name":"Projects","score":94,"weight":35},{"name":"Exams","score":81,"weight":45}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/weighted-grade-average", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"categories": [
{
"name": "Homework",
"score": 88,
"weight": 20
},
{
"name": "Projects",
"score": 94,
"weight": 35
},
{
"name": "Exams",
"score": 81,
"weight": 45
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.weighted_grade_average",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |