重複組合せ
同じ種類を何度選んでもよく、順序を問わない選び方の数を求めます。5種類から3個選ぶと35通りで、これはC(7, 3)に当たります。同じ物をいくつかの区分に配る数え方と同じです。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 異なる種類の数
- 5
- 抵抗(Ω)
- 3
- 数量
- 35
- n+r−1
- 7
- nの最大値
- 500
- rの最大値
- 500
この重複組合せ計算ツールは、n種類のそれぞれを2回以上選んでもよく、順序を問わない場合に、サイズrの異なるマルチセットをいくつ作れるかを返します。すでにご存じかもしれない小さな確認例としては、5種類から3個選ぶと35通り、3種類から2個選ぶと6通り、そしてどのような有効なnでも0個選ぶ場合は空選択として1通りになることが挙げられます。エンジンは決定的なBigIntの二項係数演算のみを使用し、ネットワーク通信もサンプリングも日付依存のショートカットもありません。宿題やコンテスト対策、コーディング演習にはブラウザで無料でご利用いただけます。
重複組合せの意味と結果に含まれる内容
重複組合せは、同じ種類が2回以上現れてもよい順序なしの選択を数えます。これは、再利用を禁じる通常の組合せC(n, r)とも、順序を考慮する順列とも異なります。形式的には、正のnと非負のrについて、この数はC(n + r − 1, r)であり、同じくC(n + r − 1, n − 1)とも表せます。
スターズ・アンド・バーズは、同じ数を、区別のつかないr個のアイテムを区別できるn個のビンに配置する方法の数として解釈します。そのため、このツールは純粋な組合せ論だけでなく、同一のユニットをカテゴリ間に分配するといった応用的な数え上げ問題にも役立ちます。
この計算ツールは、要求されたnとr、10進文字列としての厳密な個数、中間の上位インデックスn+r−1、C(7, 3)のような簡潔な公式文字列、そしてクライアントがバッチ送信前に検証できるよう公開された上限を返します。真実として提示される近似的な浮動小数点の経路も、部分集合のランダムサンプリングも一切ありません。
拒否されるケースには、nまたはrの未入力、整数でない値、分数、指数表記、文書化された上限を超える値、1未満のn、そして負のrが含まれます。1未満のnを拒否する規則は意図的なものです。置換なしの通常の組合せ、順列、あるいは実際のマルチセットの列挙が必要な場合は、それぞれ専用のツールをご利用ください。
nとrの読み取り方とBigIntによる桁の厳密性について
任意の先頭プラス記号は許容されますが、埋め込まれた空白、16進数プレフィックス、禁止されている箇所の負符号、指数表記は明確なメッセージとともに拒否されるため、不正なセルが誤った個数になることはありません。rが0であることは有効で、離散数学で使われる空積・空選択の慣例と一致して1を返します。
エンジンはnとrの両方に500という厳格な上限を課しており、二項係数が急速に大きくなるにもかかわらず、無料のブラウザ経路とエッジWorkerの両方でメモリとレイテンシを予測可能な範囲に保っています。計算にはC(a, b)に対する乗法的なBigInt公式を使用します。
iを0からbとa−bの小さい方まで動かしながら、連続する因子(a−i)/(i+1)を掛け合わせるため、時間とメモリを浪費する完全な階乗を構築することなく中間値が厳密なまま保たれます。
学習・コーディング・モデリングにおけるマルチセット組合せの位置づけ
学生が重複組合せに出会うのは、教科書がそれを通常の組合せと対比させるとき、スターズ・アンド・バーズの演習が線形ディオファントス方程式の非負解を求めるとき、あるいは固定サイズのマルチセットのすっきりした個数が必要なときです。
教師は、大きな整数を丸めたりひそかに指数表記に切り替えたりする不透明な計算アプリを信用することなく、控えめなnとrについて解答例を事前に作成できます。
開発者はスクリプトから同じ契約を呼び出して、決定論的なテストベクトルを作成したり、繰り返しのカテゴリを許す在庫やクーポンコレクター型のモデルの規模を見積もったり、対数空間の近似ではなく厳密なマルチチューズの値を要求するプログラミング課題の条件を満たしたりします。
コンテストの練習では、時間に追われるなかでOEISの表をダウンロードせずに解答を確認できるよう、マルチセット組合せの順位をオフラインで素早く取得できる情報源が必要になることがよくあります。
プロダクトや業務分析の担当者は、SKUあたりの数量に上限がなく列挙順を問わない場合に、n個のSKUからサイズrの異なる注文バスケットがいくつ生じ得るかを見積もる際にこの個数を使用します。このページでは処理はすべてブラウザ内で完結します。
活用例
宿題とスターズ・アンド・バーズの確認
教科書のマルチセット組合せの演習や非負整数解の個数について、厳密なC(n+r−1, r)の値を調べます。
決定論的なテスト用固定値
表を手作業で維持することなく、単体テスト、プロパティチェック、CIアサーション向けに再現可能なマルチチューズの10進文字列を生成します。
在庫とバスケットサイズの見積もり
重複が許される場合に、n種類からr個の異なる順序なし選択を数え、製品やモデリングのシナリオに役立てます。
よくある質問
この個数はどのように定義されますか?
重複を許し順序を問わずn種類からr個を選ぶ方法の数はC(n+r−1, r)です。
これは通常の組合せC(n, r)と同じですか?
いいえ。 通常の組合せは同じ種類の繰り返しを禁じます。このツールは重複を許します(マルチセット組合せ・マルチチューズ)。
なぜ結果は数値ではなく文字列なのですか?
二項係数はJavaScriptの安全な整数を超えることがあります。
入力できる種類数と個数の上限はいくつですか?
種類数も選ぶ個数も、それぞれ500まで入力できます。この上限により、数が急に大きくなる場合でも、どの結果も正確なまますぐに求められます。
0個を選ぶと結果が1になるのはなぜですか?
何も選ばないことも、空の選び方という1通りとして数えるためです。種類数が正しければ、選ぶ個数が0のときの結果は常に1になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/combo/combinations-with-repetition \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":5,"r":3}'const res = await fetch("https://api.kit.forhosting.com/combo/combinations-with-repetition", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 5,
"r": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/combo/combinations-with-repetition",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 5,
"r": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/combo/combinations-with-repetition", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":5,"r":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":5,"r":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/combo/combinations-with-repetition", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 5,
"r": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "combo.combinations_with_repetition",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_n | 500 |
max_r | 500 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
古典的な閉じた式はn+r−1個からr個を選ぶC(n+r−1, r)であり、マルチチューズ、マルチセット組合せ、あるいはx_1 + … + x_n = rの非負整数解の数を数えるスターズ・アンド・バーズとしても知られています。CIや在庫モデル、授業デモで再現性のあるマルチセット組合せの固定値が必要な場合は、成功したリクエストごとに$0.002でAPIを呼び出すこともできます。
重複組合せの意味とレスポンスに含まれる内容
エンジンは、サポートされる範囲内で厳密な二項係数の積を構築するか、そうでなければinvalid_inputで入力を拒否します。このページが答えるのは、ワークシートや単体テスト、JavaScriptの安全な整数を超えて桁を失ってはならないAPI利用者に適した厳密なBigInt出力を持つ、マルチセット組合せの個数のみです。
nとrの読み取り方とBigIntによる桁の厳密性について
優先的に使用するフィールドは、種類数にはn、選ぶ個数にはrですが、nについてはtypesとkinds、rについてはkとcountといったエイリアスも受け付けるため、スプレッドシートやクエリ文字列、型付きフォームでも同じ契約を再利用できます。すべての中間値はBigIntであり、最終的な個数はtoStringでシリアライズされるため、53ビット目以降でIEEEの倍精度浮動小数点数が失うような桁の損失がJSONで起きることはありません。自動化パイプライン内でスターズ・アンド・バーズを自分で再実装せずに同一の数学的結果が必要な場合は、このページの無料ブラウザ実行と有料APIを組み合わせてご利用ください。
学習・コーディング・モデリングにおけるマルチセット組合せの位置づけ
API経由の場合、成功した照会1件ごとに$0.002かかり、検証に失敗した場合は課金されず、レスポンスを返した後は何も保存されません。この無料の対話的な探索と、同一結果の有料APIという分離は、KITのtier-Aカタログの他の部分と一致しており、授業のデモから数学的な結果を変えることなく自動化パイプラインへ移行できます。関連する係数が必要な場合は階乗や二項係数のツールと、順序が重要な場合は順列カウンターと、無料で決定論的な組合せ論ヘルパーからなる小さなラボを構築する場合は他のmathエンドポイントと組み合わせてご利用ください。
技術的な質問
重複組合せ計算ツールの料金はいくらですか?
このページのブラウザ上では無料です。API経由の場合、成功したリクエストは$0.002かかりますが、無効な入力には課金されません。
nが1未満、またはrが負の場合はどうなりますか?
どちらの場合もinvalid_inputとして拒否されます。nは1以上、rは非負でなければなりません。