ForHosting KIT · 数学

最大剰余方式による議席配分 無料

得票数を最大剰余方式で整数の議席に換えます。416,000票、338,000票、246,000票で10議席をヘア式の基数で配ると、4、3、3議席になります。基数はヘア式とドループ式から選べ、各党の剰余も表示されます。ブラウザで無料で使えます。

  • 無料
  • ブラウザで動作
  • 登録不要
  • データは端末の外に出ません
ご利用方法 ウェブAPIメールTelegramアプリ 近日
入力した場合
政党ごとの得票数
416,000, 338,000, 246,000
配分する議席数
10
政党名(任意)
A, B, C
基数の方式
ヘア基数(総得票数 ÷ 議席数)
結果
基数の方式
ヘア
選挙基数
100,000

最大剰余方式(Hamilton)で、Hare または Droop の quota を用いて議席を配分します。無料で決定的、ブラウザー内でプライベートに動作します。アカウントは不要です。 アカウントは不要です。

最大剰余方式で議席が決まる仕組み

比例代表制では議席を整数で配る必要がありますが、得票数がちょうど割り切れることはほとんどありません。最大剰余方式(ハミルトン方式)は、これを2段階で解決します。まず1議席に相当する票数である基数を決め、各党に基数をいくつ満たしたかに応じて議席を配ります。端数は必ず切り捨てます。次に、まだ空いている議席を剰余の大きい党から順に1つずつ配ります。例では、416,000票、338,000票、246,000票で10議席を分けます。ヘア式の基数100,000票で最初に4、3、2議席が決まり、1議席が残ります。剰余は0.16、0.38、0.46なので、最後の議席は3番目の党に行き、最終的な配分は4、3、3になります。

配分を確かめるときによくある間違い

間違いの多くは最初の段階で起こります。切り捨てではなく四捨五入をすると方式が崩れます。この段階で配れるのは、満たした基数の分だけだからです。また、残りの議席を剰余の大きい党ではなく得票の多い党に配ると、例の3番目の党のように結果が変わってしまいます。基数の種類も重要で、比べる前に、決まりがヘア式とドループ式のどちらを求めているか確認してください。選挙制度の宿題や試験問題で、自分の答えと比べる安定した解答が欲しいときに役立ちます。

宿題と試験

定番の数量問題を、安定した再現可能な答えで手早く確認できます。

自動化

表計算ソフトや CAS をインストールせずに、同じ純粋関数をスクリプトから呼び出せます。

無料ですか?

はい。 tier A はアカウントなしで、すべてブラウザー内で動作します。

ネットワークにアクセスしますか?

いいえ。 parse エンジンはすべてをデバイス上に保持します。

この機能は誰が作成していますか?

ForHosting KIT ワークショップの samurai です。

最大剰余方式ではどのように議席を配りますか?

まず各党に、得票数に含まれる基数の数だけ議席を配り、端数は切り捨てます。残った議席は、剰余の大きい党から順に1つずつ配り、すべての議席が埋まるまで続けます。

基数の数が少ない党が最後の議席を取るのはなぜですか?

残りの議席は得票の多さではなく剰余の大きさで決まるためです。例では3番目の党の基数は2つだけですが、剰余0.46が最も大きいので10番目の議席を得て、合計3議席になります。

このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。

POSThttps://api.kit.forhosting.com/math/largest-remainder

Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。

curl -X POST https://api.kit.forhosting.com/math/largest-remainder \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"votes":[416000,338000,246000],"seats":10}'
{
  "votes": [
    416000,
    338000,
    246000
  ],
  "seats": 10
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.largest_remainder",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。

1リクエストあたり$0.002

単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。

HTTPコード意味
401unauthorizedAPIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。
402insufficient_balance残高が不足しています。チャージ後に再度お試しください。
404unknown_type指定されたタスクタイプは存在しません。タイプ名を確認してください。
429rate_limitedリクエストが多すぎます。しばらく待ってから再度お試しください。

仕組み

各政党は floor(votes/quota) 議席を得て、残りの議席は端数の余りが大きい順に配分されます。実装は完全に決定的で、API 経路と同じ純粋関数を用いてブラウザー上で無料に動作します。あらゆる算術処理の前に入力を検証するため、誤った型や範囲外の値は、静かな NaN の結果ではなく明確な invalid_input エラーになります。実装は完全に決定的で、API 経路と同じ純粋関数を用いてブラウザー上で無料に動作します。あらゆる算術処理の前に入力を検証するため、誤った型や範囲外の値は、静かな NaN の結果ではなく明確な invalid_input エラーになります。実装は完全に決定的で、API 経路と同じ純粋関数を用いてブラウザー上で無料に動作します。あらゆる算術処理の前に入力を検証するため、誤った型や範囲外の値は、静かな NaN の結果ではなく明確な invalid_input エラーになります。

入力と出力

エラーメッセージは、harness 向けに安定した英語の一致部分文字列を使用します。最大剰余方式(Hamilton)で、Hare または Droop の quota を用いて議席を配分します。入力スキーマに記載されたフィールドを指定します。必須フィールドは存在し、型が正しくなければなりません。任意フィールドは文書化された既定値を使用します。成功時のペイロードには、出力スキーマで名前が付けられた主要な結果フィールドが常に含まれるため、クライアントは推測せずに UI メトリクスをバインドできます。実装は完全に決定的で、API 経路と同じ純粋関数を用いてブラウザー上で無料に動作します。あらゆる算術処理の前に入力を検証するため、誤った型や範囲外の値は、静かな NaN の結果ではなく明確な invalid_input エラーになります。実装は完全に決定的で、API 経路と同じ純粋関数を用いてブラウザー上で無料に動作します。あらゆる算術処理の前に入力を検証するため、誤った型や範囲外の値は、静かな NaN の結果ではなく明確な invalid_input エラーになります。

エッジケースと制限

総得票数がゼロの場合や、無効な quota 名を拒否します。空または矛盾する範囲は早期に拒否されます。IEEE-754 をオーバーフローする極端に大きな中間値は、null フィールドではなく out-of-range エラーになります。実装は完全に決定的で、API 経路と同じ純粋関数を用いてブラウザー上で無料に動作します。あらゆる算術処理の前に入力を検証するため、誤った型や範囲外の値は、静かな NaN の結果ではなく明確な invalid_input エラーになります。実装は完全に決定的で、API 経路と同じ純粋関数を用いてブラウザー上で無料に動作します。あらゆる算術処理の前に入力を検証するため、誤った型や範囲外の値は、静かな NaN の結果ではなく明確な invalid_input エラーになります。

授業のデモ

無料の widget と API に一致する golden フィクスチャで、解法例を示せます。

入力が無効な場合はどうなりますか?

明確な英語のメッセージとともに invalid_input が返されます。

結果は安定していますか?

はい。決定的な計算と golden の例が契約を固定します。

KITの完全なドキュメントを見る →