値と重みから加重平均を計算するツール
この計算ツールは、値のリストと対応する重みのリストを組み合わせ、加重平均、加重和、重みの合計、項目数を返します。成績、評価、価格、測定値、複合指標など、一部の観測値をほかより強く反映したい場合に便利です。各値に同じ位置の重みを掛け、積を合計し、その結果を重みの合計で割る決定的な計算です。重みの合計がゼロの場合は除算が定義できないため、入力エラーとして処理します。
無料で実行
各値を正しい重みに対応させます
値と重みは、項目数が完全に同じ2つのリストとして入力してください。位置によって対応関係が決まり、1番目の重みは1番目の値、2番目の重みは2番目の値に適用されます。たとえば値が 82、91、76、重みが 0.25、0.5、0.25 なら、中央の値は両端の2倍の影響を持ちます。式は重みの合計で自動的に割るため、合計を1や100にそろえる必要はありません。有限の JSON 数値だけをご使用ください。空欄、文字列、無限大、未指定または空のリスト、長さが異なるリストは拒否されます。計算前に両方の並び順と、各重みが意図した影響度を表すことをご確認ください。
計算方法と返される合計を確認します
各値と対応する重みを掛け、その積を足して加重和を求めます。別に重みを合計し、加重和をその合計で割ります。応答では、weighted_average が結果、weighted_sum が分子、weight_sum が分母、count がペア数です。表計算、報告書、自動テストで結果を確認しやすい形式です。すべての重みを同じゼロ以外の係数で拡大しても平均は変わりません。重みがゼロの値は結果に影響しません。負の重みも数学的には利用できますが、結果が入力値の範囲外になる場合があるため、手法上必要な場合に限ってご使用ください。処理は外部サービスへ接続せず、1回の決定的な走査で完了します。
合計ゼロを避け、結果を適切に解釈します
重みの合計はゼロ以外でなければなりません。すべてがゼロの場合や、正負の重みが完全に相殺する場合は除算できず、入力エラーを返します。重みが割合を表す場合は、予定した要素がすべて含まれているかご確認ください。合計は 100、1、または別のゼロ以外の値でも計算できますが、要素の欠落は内容上不完全な結果につながります。成績では、未評価の課題を除外することと得点ゼロで含めることは異なり、重みゼロなら影響自体がなくなります。頻度の重みには通常、非負の値を使います。保存や公開の前に、weight_sum を想定合計と、count を元データ件数と照合してください。
活用例
授業の評価項目を統合
試験、課題、小テスト、参加点の比率が異なる場合の最終成績を計算します。
件数に応じて評価を集約
観測数の多いグループへ適切な影響度を与えながら評価をまとめます。
複合スコアを作成
正規化した指標を明示的な重要度で統合し、検証用の合計を保持します。
よくある質問
計算料金はいくらですか?
API は1リクエストあたり $0.002 です。ブラウザー版では同じ決定的な計算をローカルで実行できます。
重みの合計を 100 または 1 にする必要がありますか?
いいえ。実際の重み合計で割るため、ゼロ以外の合計であれば計算できます。
重みの合計がゼロの場合はどうなりますか?
ゼロによる除算は定義されないため、入力エラーを返します。
2つのリストの長さが異なってもよいですか?
いいえ。各値には、同じ位置に対応する重みが1つ必要です。
個別のゼロまたは負の重みを使えますか?
合計がゼロでなければ使えます。ゼロは影響を除き、負の重みには慎重な解釈が必要です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calc3/weighted-average-grade \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"values":[82,91,76],"weights":[0.25,0.5,0.25]}'const res = await fetch("https://api.kit.forhosting.com/calc3/weighted-average-grade", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"values": [
82,
91,
76
],
"weights": [
0.25,
0.5,
0.25
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc3/weighted-average-grade",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"values": [
82,
91,
76
],
"weights": [
0.25,
0.5,
0.25
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc3/weighted-average-grade", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"values":[82,91,76],"weights":[0.25,0.5,0.25]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"values":[82,91,76],"weights":[0.25,0.5,0.25]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc3/weighted-average-grade", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"values": [
82,
91,
76
],
"weights": [
0.25,
0.5,
0.25
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc3.weighted_average_grade",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |