優先度でプレゼント予算を配分する計算ツール
複数の方への贈り物を考える際、全員の優先度が同じでないと予算配分は複雑になります。この計算ツールは、贈り物全体の予算と相対的な重みから、一人ひとりに割り当てる実用的な金額を算出します。予算総額を最小通貨単位まで一致させ、計算根拠も明確にするため、表計算ソフトで何度も調整する必要がありません。3、2、1のような簡単な重みで構いません。重要なのは比率だけで、事前にパーセントへ換算する必要はありません。
無料で実行
相対的な優先度を表す重みを決めます
まず、すべての贈り物に使える合計金額を入力します。次に、贈る相手を一人ずつ登録し、正の優先度の重みを設定してください。重みは金額ではなく、合計を特定の数にそろえる必要もありません。相手同士の相対的な比率だけを示します。たとえばAlexの重みが4、Blairの重みが2なら、Alexへの配分はBlairの2倍です。2と1、または40と20でも結果は同じです。この仕組みにより、計画がまだ変わる段階でも優先順位を相談しやすくなります。近いご家族には大きな値、親しい友人には中程度の値、その他のお付き合いには小さな値を使う方法があります。誰かを対象外にするために0を指定せず、その方を一覧から外してください。計算ツールはすべての重みを検証して合計し、各値を合計値で割って配分率を求めます。氏名は入力順のまま表示されるため、元の一覧と結果を簡単に照合できます。
端数を含む比例配分の仕組みを確認します
比例計算では、最小通貨単位より細かな端数が生じることがあります。各人の金額を個別に四捨五入すると、合計が予算を上回ったり下回ったりする可能性があります。この計算ツールは、その差を残しません。最初に総予算を最小通貨単位へ丸め、各人の理論上の正確な持分を計算して、まず整数部分を配ります。残った単位は、小数部分が大きい方から順に追加します。これは最大剰余方式と呼ばれる方法です。各人の金額を所定の桁に保ちながら、返された金額の合計を返された総予算と完全に一致させられます。剰余が同じ場合は、入力一覧で先に記載された方へ追加分を割り当てるため、何度実行しても同じ結果になります。結果には、予算の半分を示す0.5のような正規化された比率と、優先度の重みの合計も含まれます。計算の確認、参加者への説明、購入表への転記にも役立ちます。
配分額を現実的な購入計画に活用します
各配分額は、その価格の商品を必ず見つけるための指定ではなく、支出上限または目安としてお使いください。金額の範囲内で適切な品物を探し、税金、送料、包装代、共同購入の費用も考慮します。これらを総予算に含める場合は、入力前に取り分けるか、各配分額と比較する価格へ含めてください。贈る相手が変わった場合、共同の贈り物が加わった場合、利用できる総額が増減した場合は、いつでも再計算できます。同じ重みを使えば相対関係も保たれるため、総額の変更だけで計画を作り直す必要はありません。ご家庭、委員会、職場の募金などでは、合意した優先順位を確認できるよう、入力した重みを結果と一緒に保存すると便利です。本ツールは人間関係を評価せず、商品も推薦しません。一貫した算術処理だけを行います。APIの各リクエストは$0.002で、単発の計画にはブラウザー版を無料で使えます。通信、乱数、現在日時は結果に影響しません。
活用例
ご家族への季節の贈り物を計画
近いご家族の重みを高くしながら、季節全体で決めた支出上限を守れます。
共同で集めた費用を配分
グループで合意した優先度に従い、集めた金額を複数のお礼の品へ分けられます。
予算変更後に再調整
優先度はそのままに、利用できる総額が変わった時点ですべての目安を再計算できます。
よくある質問
優先度の重みとは何ですか?
相対的な値です。重み6の方には、重み3の方の2倍の金額が割り当てられます。
重みの合計を100にする必要がありますか?
ありません。すべて正の値であれば、各重みを合計で割って比率を求められます。
配分額の合計は予算と完全に一致しますか?
はい。総額を最小通貨単位へ丸め、残りを小数部分が大きい順に配ります。
追加の1単位で同順位になった場合はどうなりますか?
一覧で先に入力された方へ割り当てるため、再計算しても同じ結果になります。
0または負の予算を使えますか?
使えません。正の有限数で、丸めた後も最小通貨単位以上になる必要があります。
APIリクエストの料金はいくらですか?
1回のリクエストは$0.002です。ブラウザーでは無料で計算できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/life/gift-budget-split \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total_budget":240,"recipients":[{"name":"Alex","priority_weight":3},{"name":"Blair","priority_weight":2},{"name":"Casey","priority_weight":1}]}'const res = await fetch("https://api.kit.forhosting.com/life/gift-budget-split", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total_budget": 240,
"recipients": [
{
"name": "Alex",
"priority_weight": 3
},
{
"name": "Blair",
"priority_weight": 2
},
{
"name": "Casey",
"priority_weight": 1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/gift-budget-split",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total_budget": 240,
"recipients": [
{
"name": "Alex",
"priority_weight": 3
},
{
"name": "Blair",
"priority_weight": 2
},
{
"name": "Casey",
"priority_weight": 1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/gift-budget-split", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total_budget":240,"recipients":[{"name":"Alex","priority_weight":3},{"name":"Blair","priority_weight":2},{"name":"Casey","priority_weight":1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total_budget":240,"recipients":[{"name":"Alex","priority_weight":3},{"name":"Blair","priority_weight":2},{"name":"Casey","priority_weight":1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/gift-budget-split", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"total_budget": 240,
"recipients": [
{
"name": "Alex",
"priority_weight": 3
},
{
"name": "Blair",
"priority_weight": 2
},
{
"name": "Casey",
"priority_weight": 1
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.gift_budget_split",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 1000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |