組合せ計算機
組合せ計算機へようこそ。要素の個数(n)と取り出す回数(k または r)を入力してください。重複を有効にする場合、下にチェックを入れてください。次に「計算」ボタンを押してください。
組合せの数式
組合せでは、n 個のものがあるグループからどの k 個のものを取り出すか示されます。n の k 組合せとよく呼ばれますが、n の k 順列と混同しないでください。組合せの場合、選択したものの順序は重要ではない反面、順列では重要になります。
より大きな n 要素の集合から k 要素を選択するパターン数は?重複を伴わない n の k 組合せ(選択された各要素が反復使用されないように、集合から除外された場合)の数を表す記号は です。多くの情報源では または の記号も使用されますが、後者の方が幅広く採用されています。従って、以下のように記述できます。
この式では、n! は n の階乗を指します。一方、n の k 重複組合せ(選択された要素は集合から除外されず、反復使用できます)の数を表す記号は であり、 のように表記されることがあります。
重複を伴わない組合せや順列は、以下の公式によってお互いの関連性を伺えます。
組合せには重要でなくても、順列には重要なものの順序を反映するには、順列の数は k! で割ります。選択されたものの順序が重要なシナリオに興味がある場合、順列と置換計算機を参照してください。
組合せの例
100人のグループで行われる握手の回数
カクテルパーティーの会場に到着したことを想定しましょう。あなたを含めて100人の参加者がいます。他の参加者全員に会って握手を交わそうとすると、「全員がお互いに握手し合った場合、握手の合計回数は何回になるのだろうか」と考えます。
参加者は n = 100 人います。このグループで組めるペアは何通りあるでしょうか?言い換えると、100の2組合せは何通りありますか?回答は以下の通りです。
握手は4950回行われます。同じ人でペアを組んで握手できないため、重複を伴わない組合せを使用していることに気づきましたか?
ポーカーの役のパターン数
ジョーカーカードを使用しないゲームを想定しましょう。つまり、カード1組に52枚あります。同じカードを2枚持つことができないため、重複なしでカード5枚選択します。カードの順序は重要ではありません。従って、k = 5 と n = 52 という条件で、重複を伴わない n の k 組合せを使用します。
従って、ポーカーには2,598,960通りの異なる持ち札があります。この数値を参考にして、様々な役を得る確率を計算することができます。
フォーカードを得る確率
フォーカードを得るには、まず同じ数字のカードを選択(13通り)して5枚目のカード(48通り)を選択します。フォーカードを含む持ち札には 通りの異なるパターンがあります。従って、このような役を得る確率は です。
フルハウスを得る確率
フルハウスを得る確率の計算はもっと難しくなります。まず2枚の数字(13通り)を選択したら、3枚の数字(12通り。先ほどの2枚とは別の数字になるため、オプションが1つ減ります)を選択します。次に、異なるマークの組合せを考慮しなければなりません。2枚のカードには のマークの組合せがある一方、3枚のカードには のマークの組合せがあります。これらの数値を掛け合わせることで、以下のような合計パターン数を得られます。
フルハウスには3744通りの異なるパターンがあるため、得る確率は です。つまり、フルハウスを得る確率はフォーカードの6倍です。
フラッシュを得る確率
フラッシュは同じマークのカードを5枚揃えた役を指します。まず選択するマークには4通りありますが、13枚あるこのマークのカードから5枚選択します。 通りのパターンがあります。フラッシュ役の異なるパターン数は合計で以下の通りです。
フラッシュを得る確率は です。
注意:この公式には、ストレートフラッシュも含まれています。ストレートフラッシュとは、同じマークのカードで数字が連続している役を指します。カードの数字が連続していない「普通」のフラッシュの確率を計算する場合、上記で計算した確率からストレートフラッシュの確率(以下を参照)を差し引きます。
ストレートを得る確率
こちらでは、5枚のカードの順序を取得します。カードのマークとは関係なく、数字が連続した状態で揃えます。このような役のパターン数を計算するには、数字が最も高いカードを指定する必要があります。数字が最も高いカードはA、K、Q、J、10、9、8、7、6、5(Aは5-4-3-2-Aの順序で数字が最も低いカードとしてもみなされます)になるため、10通りのパターンがあります。数字が最も高いカードを選択したら、他のカードの数字が決まります。次にマークを選択しますが、5枚のカードにはそれぞれ4種類のマークを選択できます。ここでは、45 のである 4 の 5 重複順列を使用します。従って、ストレートの役のパターン数は以下の通りです。
ストレートを得る確率は です。
注意:この公式には、ストレートフラッシュも含まれています。ストレートフラッシュとは、同じマークのカードで数字が連続している役を指します。同じマークでないカードで「普通」のストレートを得る確率を計算する場合、上記で計算した確率からストレートフラッシュの確率(以下を参照)を差し引きます。
ストレートフラッシュを得る確率
ストレートフラッシュは非常に強力でレアなポーカー役の一つです。この役では、カードの数字が連続(ストレートと同様に)しているだけでなく、同じマーク(フラッシュと同様に)で揃えます。このような役のパターン数を計算するには、まず数字が最も高いカードを選択する必要があります。普通のストレートと同様に、10通りあります。カードの数字が指定されたら、マークを選択します。これには4通りあります。公式は以下の通りです。
役は40通りしかないため、ストレートフラッシュを得る確率は です。
注意:この公式には、ロイヤルフラッシュも含まれています(以下を参照)。ロイヤルフラッシュではないストレートフラッシュを得る確率を計算する場合、上記で計算した確率からロイヤルフラッシュの確率を差し引きます。
ロイヤルフラッシュを得る確率
ロイヤルフラッシュを得る確率は、ストレートフラッシュの確率よりもさらに低くなります。ロイヤルフラッシュは、Aが最も高い数字として指定されたストレートフラッシュであるためです。つまり、ロイヤルフラッシュに含まれるカードの数字は必ずA、K、Q、J、10です。バリエーションがあるのはマークのみです。マークは4種類しかないため、4通りのパターンが成立します。従って、ロイヤルフラッシュを得る確率は であり、ストレートフラッシュを得る確率の1/10になります。
スリーカードを得る確率
スリーカードを得るには、まず13種類ある数字を選択します。残りの12種類の数字から他の2枚を選択します。この2枚が同じ数字にならないように注意しなければなりません(同じ数字の場合、フルハウスになるため)。従って、重複を伴わない 12 の 2 組合せである()を使用します。最後に、マークを選択します。3枚のマークを として選択したら、他の2枚のマークを選択します。両方とも数字が異なるため、42 である 4 の 2 重複順列を使用します。最終的に、公式は以下の通りになります。
スリーカードを得る確率は です。
ツーペアを得る確率
ツーペアを得るパターンは何通りあるでしょうか?まず、各ペアの数字を選択する必要があります:。次に、5枚目のカードの数字を選択します:。さらに、各ペアのカードのマークを選択します。各ペアのカードには異なるマークを選択する必要があるため、数字が低いペアのマークを選択するパターンは 通りある一方、数字が高いペアのマークを選択するパターンは 通りあります。最後に、5枚目のマークを選択しますが、4通りのパターンがあります。算出した因数を全部掛け合わせると、以下のようになります。
ツーペアを得る確率は です。
ワンペアを得る確率
最後に、ワンペアを得る確率は次のように計算します。1)ペアの数字を選択する:、2)残り3枚の数字を選択する:、3)ペアのカードのマークを選択する:、4)残り3枚のマークを選択します:43。組合せを使用して異なるカード3枚の数字を選択(つまり、)する一方、順列を使用してそれぞれのマークを選択(つまり、43)することについて、疑問を抱く方もいらっしゃいます。カードの数字の順序は重要でないため、数字を選択する際に組合せが使用されます。カードの順序を変更しても、ポーカーの役は同じです。ただし、この3枚は異なる数字を持っているため、高低の順序があります。この順序で各カードを特定しながらマークを選択できます。まず最もランクの高いカードのマークを選択し、次に中央のカードのマークを選択します。最後に、数字が最も低いカードのマークを選択します。各選択には4通りのオプションがあるため、 のパターンがあります。
従って、ワンペアの総数は以下の通りです。
なお、ワンペアを得る確率は です。実際にやってみるとこの結果を確認できます。カード1組を切って5枚引いたら、ペアが出てきましたか?結果をメモしてこのプロセスを何回か繰り返します。例えば100回繰り返した場合、50回より若干少ない回数でペアが出ます。
くじに勝つ確率
多くの国のくじでは、多数のボールが含まれるグループからいくつかのボールを引き出すことで、結果を得ます。結果の数字の組み合わせを当てた人が当選し、高額な賞を得られます。日本のロト7では、1〜37の番号が割り当てられたボールがあり、7個選択されます(置換なし)。可能な組み合わせは以下の通りです。
従って、ロト7には10,295,472通りのパターンがあります。言い換えると、1等に当選するには、くじを10,295,472枚購入する必要があります。くじを1枚購入した場合、当選確率は0.00000971%、つまり1/10,295,472になります。
パーティー用お菓子の組合せ数
この例では、友だちの家で開催されるパーティに参加することを想定しましょう。あなたはお菓子をいくつか持って来るように依頼されます。お菓子はポテトチップス、クッキー、クラッカーの3種類あります。5個買って持って行く場合、何通りの組合せがあるでしょうか?
まず、3要素から選択するため、n = 3 です。さらに配置する順序は重要ではありません。最後に、各お菓子の種類は1つ以上購入できます。従って、3 の 5 重複組合せが成立します。公式は以下の通りです。
パーティー用に選択するお菓子は21パターンあります。結果を裏付けるため、可能なパターンをすべてリストアップしてみましょう(お菓子は簡単にA、B、Cで表します)。
組合せの公式について
重複を伴わない n の k 組合せ
重複を伴わない n の k 組合せの公式(「n 個から k 個を選ぶ」または「n 個から r 個を選ぶ」と呼ばれる)は以下の通りです。
これが本当に正しい公式であることを確かめるために、1から n までの数字の中から k 個を選ぶ過程を考えてみましょう。まず、選んだ数字を長さ k の列に並べます。列の最初の位置には、n 個の数字のどれでも置くことができます。最初の位置に置いた数字を集合から取り除くと、2番目の位置には残りの n − 1 個の数字の中から選ぶことができます。この数字も集合から取り除くので、3番目の位置には n − 2 個の数字が残ります。このようにして長さ k の列が完成するまで選択を繰り返します。このような列の総数(重複を伴わない n の k 順列の数に等しい)は、各段階で選べるオプションの数を掛け合わせることで求められます。
ただし、この掛け算は、階乗の k 個の最大因数を掛け合わせたものです。従って、以下のように書き直せます。
ここでは、分母の階乗は分子の n − k 個の最小因数を相殺するため、前回の公式と一致します。
しかし、現段階では順列(組合せでなく)の数を計算しているため、説明する点はまだあります。順列では、要素の順序が重要なため、数列の構成時に列を重視して1番目、2番目、3番目などを指定しました。今回は、同じ数字で構成される数列を1つの組合せとして扱います。k 個の異なる数字を使用して、異なる数列には何通りのパターンがあるでしょうか?答えは簡単で、k! になります。順列の数は組合せとの数の k! 倍になります。組合せの数を求めるには、順列の数を k! で割ります。
n の k 重複組合せ
n の k 重複組合せの公式はどのように求めますか?n 個の各要素は0〜k 回の範囲で選択できるため、1〜n 番号が割り振られた容器が n 個あることを想定しましょう。各容器には最大 k 個の玉が入っており、すべての容器に入っている玉の合計数は k とします。容器は要素を表し、ある容器に入っている玉数は、その容器で表している要素を選択する回数を指します。
数字の列を使用して、容器に入っている玉数を説明する方法とは?次の方法で構成された n − 1 個の数字の列を作成できます。この列の i 番目では、1番目から i 番目までの容器に含まれる玉と容器の数がわかります。例えば、この列の1番目の数字は、1番目の容器に入っている玉数+1です(従って、1〜k + 1 の範囲になります)。2番目の数字は、最初の2個の容器に入っている玉数+2です(従って、2〜k + 2 の範囲になりますが、1番目の数字より大きくなります)。3番目の数字は、最初の3個の容器に入っている玉数+3です(3〜k + 3 の範囲になりますが、2番目の数字より大きくなります)。4番目以降の数字には、前例と同様な法則が適用されます。最後の数字の値は、最後の容器を除き、全容器に入っている玉数 + n − 1 であることが伺えます。値の最小値は n − 1(すべての玉が最後の容器に入っている場合)であれば、最大値は n − 1 + k(最後の容器に入っている玉がない場合)の場合があります。
それでは、視点を変えて見ましょう。1〜n − 1 + k の範囲で集合の数字があることを想定しましょう。この集合の数字から、重複なしで n − 1 個の数字を選択します。最小から最大の数字の列で並べたら、各容器に入れる玉数が決まります。n − 1 + k 個の数字で構成されるより大きい集合から n − 1 個の数字を選択する各パターンは、n 個の容器に k 個の玉を入れる1つのパターンに対応します。しかし、重複なしで n − 1 + k 個の数字から n − 1 個の数字を選択するパターンは何通りありますか?回答は以下の通りです。
これで求めている公式に近づきました。最後のステップでは、分母の階乗の順序を入れ替えるため、以下のようになります。
最終的には、以下の公式が成立します。
パスカルの三角形と二項係数
二項式とは、2つの項(例えば、)を使用した数式です。二項係数は、 を非負整数の指数で累乗したとき、x と y の横に表示される数値です。例えば、 。このような例では、二項係数はそれぞれ1、1-1、1-2-1、1-3-3-1を表します。二項係数は n の k 組合せと関連しています。 と表記すると、 横にある係数は です。例えば、 では の横にある係数は です。この事実は、一般的に以下の公式で表すことができます。
さらに、二項係数には興味深いパターンがあり、パスカルの三角形と呼ばれる三角に配置することができます。
| n | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | ||||||||||
| 1 | 1 | 1 | |||||||||
| 2 | 1 | 2 | 1 | ||||||||
| 3 | 1 | 3 | 3 | 1 | |||||||
| 4 | 1 | 4 | 6 | 4 | 1 | ||||||
| 5 | 1 | 5 | 10 | 10 | 5 | 1 | |||||
| 6 | ⋯ | ||||||||||
パスカルの三角形では、次の行は前の行の隣り合う要素の和から作られます。例えば、4列目の6は上の列の 3 + 3 で構成されます。同様に、5列目の10は上の列の 4 + 6 で構成されます。このパターンは以下の方程式でまとめることができます。
二項方程式と恒等式
二項係数に関する最も知られている恒等式をいくつか紹介します。
Pythonで n の k 組合せ
Pythonのプログラミング言語で、重複を伴わない n の k 組合せの数を求めるには、mathモジュールのcomb関数を使用します。
from math import comb
def nCk(n, k):
return comb(n, k)
n の k 重複組合せの数には、重複がない組合せと重複がある組合せを関連付ける公式を使用します。
from math import comb
def nEk(n, k):
return comb(n + k - 1, k)
重複を伴わない n の k 組合せをすべて表示するビルトイン関数もあります。
from itertools, import combinations
def list_combs(n, k):
for c in combinations(range(1, n+1), k):
print(c)
n の k 重複組合せをすべて表示する場合、以下を使用します。
from itertools import combinations_with_replacement
def list_combs_wr(n, k):
for c in combinations_with_replacement(range(1, n+1), k):
print(c)
重複を伴わない n の k 組合せの数を求める関数を自分で作成したい場合は、以下の例を参考にしてください。
from math import factorial
def nCk(n, k):
return int(factorial(n) / (factorial(k) * factorial(n-k)))
n の k 重複組合せの数を計算する関数については、以下のものを使用できます。
from math import factorial
def nEk(n, k):
return int(factorial(n + k - 1) / (factorial(k) * factorial(n-1)))
組合せ計算機の使用方法
組合せ計算機を使用すると、重複を伴う(または伴わない)n の k 組合せを計算できます。計算するには、「n」と表記された欄に要素の個数を入力します。次に、「k または r」と表記された欄に取り出す回数を入力します。重複組合せを計算する場合、下にチェックを入れます。「計算」ボタンを押すと、結果が下に表示されます。
計算機は巨大数の計算に適しています。n = 1000000 と k = 1000 などの入力による結果は問題なく処理できます。大数の場合、計算機では2種類の形式で算出されます。1行目には指数表記で近似値が表示される一方、2行目には正確な結果が表示されます。
計算機には上限値は設定されておらず、n と k の数値とは関係なく、計算の実行を試みます。計算の成否は、お使いのシステム構成に依存します。デスクトップパソコンに使用されるChromeの最新バージョンは、n = 8000000000 と k = 10000000(隕石が地球に衝突する後に、巨大な宇宙船内で生活する10,000,000人を選択するパターン数)などの入力に対する結果を簡単に計算できます。しかし、モバイルデバイスなどの他のシステム設定ではこのような大数をうまく処理できない場合があります。
計算機に使用できる他の機能がいくつかあります:
- 表示結果の基数を選択します。基数には2〜36の整数を入力してください。デフォルトの基数は10のため、基数を変更しない限り、結果は10進法で表示されます。10以外の基数を選択した場合、結果のみに適用されますが、入力内容は必ず10進法が適用されます。
- 「消去」ボタンをクリックして「n」と「k」の欄を消去します。任意の値を再入力します。
- 結果をクリップボードにコピーします。この機能を使用するには(それ以外の機能も同様)、「結果」欄の上にある対応するボタンを押します。
- 結果をダウンロードしてテキストファイルとしてデバイスに保存します。
- 結果を印刷します。
- 結果へのリンクをクリップボードにコピーします。
- 結果を消去します。
このコンテンツの引用または埋め込みについて
このWebサイトを出典として引用する前提として、このWebサイトを無料で利用できます(商用目的を含む)。科学技術の文書に引用する場合、以下の引用元を表記することができます。
インターネットでこのWebサイトを引用するには、メインのURL(https://
iframe要素を使用してこのページをお持ちのWebサイトを埋め込むこともできます。ページに計算機だけを表示して他のコンテンツ(メニューや記事など)をすべて表示しない場合、src属性に以下のURLを使用できます。https://
クリック可能なリンクの埋め込みと引用により、このページの出典をお持ちのWebサイトに明記してください。アプリをWebサイトに埋め込んだ場合、contact@simiade.com宛てに連絡してその旨をお伝えいただけると幸いです。アプリの変更などに伴って、Webサイトの表示内容を更新する必要がある場合、その変更の旨について連絡させていただく場合があります。
出典
Charalambides, Charalambos A., Enumerative Combinatorics, CRC Press, 2002.
お問い合わせ
質問、意見、提案などありましたら、こちらからフィードバックを送信できます。
郵便でもご連絡いただけます。
Adam Narkiewicz
Plac Bankowy 2
00-095 Warszawa
ポーランド
+48 728235409
contact@simiade.com
https://simiade.com/ja/
