リーグ順位とハンディキャップ用ボウリング平均計算機
この計算機は、総倒ピン数と終了ゲーム数から、小数を含む正確な平均と、リーグ順位やハンディキャップで一般に記録される整数の平均を求めます。割り算の余りと、ゲーム数を変えずに公式平均を1上げるために必要なピン数も表示します。各スコアを個別に入力せず、週単位のシリーズ、シーズンの一部、リーグ全体の成績を確認できます。
無料で実行
同じ対象期間の数値を入力します
集計したいゲームで倒したピンの合計と、その合計に対応する終了ゲーム数を入力してください。9ゲーム分の合計なら、3回のリーグ開催日に分かれていてもゲーム数は9です。所属リーグが公式記録に含める場合を除き、練習、欠員スコア、対象期間外のゲームは加えません。総倒ピン数は0でも構いませんが、ゲーム数は1以上が必要です。また、1ゲーム300ピンという物理的な上限を検査し、ゲーム数の300倍を超える不可能な合計は受け付けません。順位表を参照する場合は、累計ピンと累計ゲームの欄を使用してください。スコアシートから計算する場合は、終了したゲームの最終スコアだけを足します。分子のピン数と分母のゲーム数が同じゲーム群を表すことが、信頼できる平均を得るうえで最も重要です。
正確な平均とリーグ平均を区別します
正確な平均は総倒ピン数をゲーム数で割った値で、小数第3位まで表示されます。リーグ平均は整数の商であり、小数部分は切り捨て、切り上げません。たとえば9ゲームで1,742ピンなら、正確な平均は193.556、リーグ平均は193です。多くの順位表やハンディキャップ規定が確定した整数平均を使うため、この違いは重要です。余りのピン数は、各ゲームに整数平均分を割り当てた後に残る数です。同じゲーム数のまま次の整数平均へ達するために必要なピン数も示しますが、これは計算上の境界であり、次のゲームの予測ではありません。最低ゲーム数、参加時平均、再評価、決勝戦などについては、必ず所属リーグの規定をご確認ください。
順位とハンディキャップに活用します
規定が小数部分の切り捨てを求める場合、順位表には整数のリーグ平均を転記してください。成績推移の分析や、同じ公式平均になった期間同士の比較には正確な平均を残すと便利です。ハンディキャップ計算では、この平均は入力値の一つにすぎません。リーグごとに基準点から平均を引いて割合を掛けたり、上限、下限、新規参加者向けの規則を設けたりします。そのため、この計算機は特定の基準点や割合を仮定しません。累計ピンまたはゲーム数が変わるたびに再計算してください。ゲーム数が異なる週平均を単純に平均すると各週が同じ重みになり、シーズン成績が歪みます。対象となる全ピンを合計し、対象となる全ゲーム数で一度だけ割ってください。確認できるよう、元の合計値も結果と一緒に保管することをおすすめします。
活用例
リーグ順位表を更新する
累計ピン数とゲーム数から、現在の順位表に使う整数平均を求めます。
ハンディキャップの入力値を用意する
リーグ所定の基準点と割合を適用する前に、確定平均を算出します。
シーズン成績を振り返る
公式の整数値を確認しながら、複数期間の正確な平均を比較します。
よくある質問
ボウリング平均の計算式は何ですか?
総倒ピン数を終了ゲーム数で割ります。小数第3位までの商と整数部分を表示します。
リーグ平均は切り上げますか?
いいえ、小数部分を切り捨てます。所属リーグでも同じ方式かご確認ください。
正確な平均とリーグ平均が違うのはなぜですか?
正確な値は小数部分を残し、リーグ値は順位やハンディキャップで一般的な整数の商を使うためです。
複数の週平均を平均してもよいですか?
合計ピンを合計ゲーム数で割ってください。ゲーム数が異なる週平均の単純平均は正しくありません。
ハンディキャップも計算できますか?
いいえ。基準点、割合、上限などはリーグごとに異なります。ここでは別計算に必要な平均を求めます。
APIの利用料金はいくらですか?
APIリクエスト1回の料金は$0.002です。ブラウザーでは同じ決定的な計算をローカルで実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/hobby/sport-bowling-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total_pinfall":1742,"games":9}'const res = await fetch("https://api.kit.forhosting.com/hobby/sport-bowling-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total_pinfall": 1742,
"games": 9
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/sport-bowling-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total_pinfall": 1742,
"games": 9
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/sport-bowling-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total_pinfall":1742,"games":9}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total_pinfall":1742,"games":9}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/sport-bowling-average", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"total_pinfall": 1742,
"games": 9
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.sport_bowling_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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |