ドント方式の議席配分を得票数から計算

ドント方式の議席配分を得票数から計算

政党名と安全な整数得票、総議席数からドント方式の配分を計算し、最終議席境界の同一商は推測せず通知します。

入力

label,votesの固定2列をCSV・TSV・空白区切りで2〜201行入力します。

1〜500の整数です。結果の議席合計と一致することを内部検証します。

使い方

  1. ドント方式の議席配分のラベル列、数値列、単位、入力行数を確認して表を用意します。
  2. CSV、TSV、単純空白区切りの一形式に統一し、定義済み列順で貼り付けます。
  3. 選択欄がある場合は条件を指定して計算し、代表行と結果行数を元表へ照合します。
  4. 必要なら見出し付きTSVをコピーし、元入力、単位、条件、計算日時と一緒に保存します。

計算式・考え方

各党の得票vを1、2、…、議席数で割った商を大きい順に選びます。商の比較は浮動小数の除算ではなくv_a d_bとv_b d_aのBigInt交差積で行い、選択境界が同一商なら停止します。

注意事項

  • ドント方式では各党の得票を1、2、3と順に割った商を並べ、必要な議席数だけ大きい商を選びます。本ページは党ごとの得票と総議席から方式の機械的な部分を理解するシミュレーションです。選挙区、阻止条項、候補者順位、当選資格、端数処理など個別制度の全要件は扱いません。
  • 商を通常の浮動小数で作ると、大きな得票の近い分数が同じ近似値になったり順序を誤ったりする可能性があります。そこで得票a/除数bと得票c/除数dをa×dとc×bのBigIntで比較します。入力得票は0からJavaScriptの安全整数上限までに限定し、Pythonの整数比較と同じ結果を検証します。
  • 最終議席を挟む二つの商が数学的に同じ場合、党順や名前順で勝者を作りません。実際の制度で定められた同順位処理を確認する必要があるため、境界tieとしてエラーを表示します。選択範囲の内部で同じ商があっても両方が採用され、最終配分が変わらない場合は決定的な並びで計算を続けます。
  • 既定例は50議席で、入力順に28、6、5、5、3、2、1議席となり、合計50を内部検証します。この票数は方式の照合例であり、将来の得票や実際の選挙結果を予測するものではありません。票数、党名、議席数を更新した場合は根拠時点を別記録へ残してください。
  • 党数は二以上百以下、総議席は一以上五百以下です。各党0票は許しますが全党合計0は拒否します。政党名の重複は別党を一つへ合算したように見えるため拒否し、同じ組織の票を複数行に分ける場合も制度上許される集計単位かを先に確認してください。
  • 国立国会図書館の選挙制度資料でドント方式の基本を照合していますが、法令、選挙管理機関の告示、公式集計を置き換えません。制度は国、選挙、時点で異なり得るため、現実の議席確定に使うときは適用法令と公式の同順位規則を必ず確認してください。
  • 結果表は入力順で党名、得票、配分議席を表示します。商の全ランキングを表示しないので、境界を監査する場合は別の正式計算でも最終採用商と次点商を確認してください。得票予測を入力して得た議席は条件付きシナリオにすぎず、確率や誤差範囲を持つ選挙予測ではありません。
  • 入力は先頭に一つのラベル列、その後にページごとに決まった一〜四つの数値列を置きます。カンマ区切りCSV、タブ区切りTSV、単純な空白区切りの一形式を選び、途中で区切りを混ぜないでください。ヘッダーを付ける場合はlabelと定義済みの英字列名を順番どおりに置きます。列名の似た綴りや列の入れ替わりを推測で補正しないため、貼り付け前に先頭行を照合してください。
  • ラベルは一文字以上八十文字以下の単一行文字列です。タブ、改行、制御文字、空ラベルは使えず、同じラベルの重複も拒否します。表計算ソフトで同名行を区別したい場合は番号や期間をラベルへ明示してください。全角と半角、異体字、大文字と小文字を勝手に同一化しないので、見た目が似た名称も元データ側で統一してから計算します。
  • 数値セルは符号、小数点、指数表記を含む厳密な十進表現だけを読みます。桁区切りカンマ、通貨記号、百分率記号、単位、NaN、Infinity、十六進数、HTML、JavaScript、数式は数値へ変換しません。空セルを0にする処理もないため、欠測と観測された0を混同せず、欠測方針は元表を作る段階で決めてください。
  • 実データは二行以上二百一行以下、入力全体はJavaScriptのUTF-16長で三万二千文字以下、各数値の絶対値は1e100以下です。上限を超えた行を黙って切り捨てず、計算全体を停止します。この境界はブラウザーを長時間占有する入力や説明できない桁あふれを防ぐためで、大規模データ処理や任意精度計算が必要なら目的に合う環境を選んでください。
  • 入力の解析、演算、結果表の生成、コピー用TSVの作成は開いているブラウザー内だけで完結します。ファイルをアップロードせず、外部APIやCDNへ表データを送りません。ただし共有端末の画面、OSのクリップボード履歴、ブラウザー拡張、画面共有は本ページから制御できないため、計算に不要な個人名、顧客情報、選挙人情報などを貼り付けないでください。
  • 結果表の文字セルはHTMLとして解釈せずtextContentで表示します。コピー用TSVではラベルがイコール、プラス、マイナス、アットマークで始まる場合に先頭へ単一引用符を付け、表計算ソフトが式として実行する危険を減らします。この対策は貼り付け先の全機能を保証するものではないため、外部から受け取ったラベルは貼り付け先でも確認してください。
  • 内部の一般数値はIEEE 754 binary64です。和はPython版とJavaScript版で同じ入力順のNeumaier補償和を使い、単純加算より桁落ちを減らしますが、十進小数を二進数へ変換する丸めは残ります。画面の表示桁数が多くても測定精度や統計的確実性が増えるわけではなく、正式帳票の十進丸めや任意精度の規則を自動適用しません。
  • 乗算、平方、比率、合計が有限範囲を超えた場合はInfinityへ置き換えずエラーにします。非零の積や比がbinary64の非零範囲を下回って0になった場合も、実測0と区別できなくなるため停止します。極端な尺度を扱うときは単位を変えて数値の大きさを整え、その換算係数と元単位を記録してから再計算してください。
  • 結果表にはcaption、列見出し、文字の行見出し、縦横スクロール領域を設けます。狭い画面では表だけを横へ動かし、本文の幅や既存テーマを押し広げません。二百一入力行と合計行を扱うページでは結果が最大二百二行になるため、先頭、中央、末尾を確認し、コピーしたTSVの行数も元表と照合してください。
  • 再現性を保つには、元の貼り付け文字列、列名、列順、単位、入力日時、選択条件、結果TSVを同じ記録へ残します。画面上の丸め値だけを書き写さず、生のコピー値と代表行を独立した表計算式や手計算で照合してください。重要な判断では一つのツールの成功表示だけを根拠にせず、公式資料、担当者、専門家の確認を組み合わせます。
  • このページは入力された有限データへ指定式を適用する検算道具であり、元データの真正性、母集団の代表性、単位の整合、将来の継続、制度上の確定を保証しません。結果の意味は対象、期間、収集方法、除外規則によって変わります。数値が期待と違うときは丸めだけで合わせず、入力行、列の意味、数式の適用条件から順に見直してください。
  • binary64による汎用の検算です。入力定義、単位、母集団、制度条件、正式な丸めは独立に確認してください。

よくある質問

引用符付きCSVや桁区切りカンマを読み込めますか?

読み込みません。引用符、桁区切り、単位文字を外し、labelと定義済み数値列だけの単純な固定列表にしてください。

同じラベルを複数行へ使えますか?

使えません。結果行との対応を一意にするため重複を拒否します。番号、期間、地域など意味のある識別子をラベルへ加えてください。

201行を超えた場合は先頭だけ計算しますか?

しません。切り捨てで標本や議席配分が変わることを避けるため、入力全体をエラーにします。目的を保てる分割や集約方法を別に決めてください。

入力した表はサーバーへ送信されますか?

送信しません。解析、計算、表表示、TSV生成はブラウザー内だけで完結します。共有端末とクリップボードの扱いには注意してください。

ドント方式の議席配分のラベル付き表解析、有界計算、結果表とTSVの生成はclient-onlyで行い、外部API、CDN、アップロード、サーバー保存を使用しません。