順列と置換計算機

順列と置換計算機

順列の数を計算するには、オプション数(n)と選択可能な回数(通常は k または r と表記)を入力し、オプションを2回以上選択できる場合は「重複を有効にする」にチェックを入れます。「計算」ボタンを押すと結果が下に表示されます。

結果⁚
2026-09-17、
Adam Narkiewicz

Adam Narkiewicz氏は経済学の博士号を取得し、技術的な記事を書きながら、オンラインアプリの開発を管理しています。詳細については、以下のWebサイトを参照してください。
https://narkiewicz.info/
https://www.linkedin.com/in/adamnarkiewicz/

順列と置換とは?

置換とは、ある列における要素の異なる順番を指します。置換の数は、要素の列を並び替える際に、何通りの異なるパターンがあるか示します。

n の k 順列とは、より大きな n 要素の集合から、k の要素を取り出して順列する方法を指します。順列と置換計算機は、nk の特定の値に対してこのような配置を計算します。一部の情報源では、「r」は「k」の代わりに使用されますが、説明している内容は同じです。

n の k 順列は2種類あります。1つ目は、重複を伴わない列です。つまり、各 n 要素は列で1回だけ使用できます。2つ目は、列で要素が2回以上使用される場合、重複を伴う n の k 順列(重複順列)と言います。この計算機は両種類の順列を計算できます。

順列と組合せ

順列は組合せと混同される傾向がよくあります。例えば、日常会話でカギや金庫を開ける数字の組合せについて話すことがあります。しかし、厳密に言うと、カギを開ける数字の列は、ほとんどの場合は重複順列です。

順列と組合せの違いは数学で定義されていますが、前者の場合は要素の順序が重要なため、配置と列と関係します。一方、組合せには、順序は重要でないため、要素の選択や要素の部分集合に関連します。

カギを開ける暗号は、数字の順番が非常に重要となる列です。したがって、日常会話では一般的にこれを「コンビネーション(組合せ)」と呼びますが、数学的には正しい用語ではありません。

順列ではなく、組合せについて興味がある場合、組合せ計算機のページを参照してください。

順列の公式

まずは重複を伴わない n の k 順列について解説します。n 個の要素を使用して長さ k の列を作成する場合、以下の公式によって異なる列の数を求めることができます。

P(n,k)=n!(nk)!

公式の n! は n の階乗を指します。P(n,k) に加えて、一部の情報源では以下のように、他の記号が使用されます。

P(n,k)=Pkn=Pn,k=(n)k=nk_

一方、n の k 重複順列は以下の公式を使用します。

U(n,k)=nk

簡単に言うと、nk 乗です。

順列の公式について

n 個の要素を使用して、長さ k の列を作成することを想定しましょう。列の始めに n 個の要素のうち、任意のものを一つ配置できます。重複を伴わない順列の場合、選択された要素は利用可能な集合から除外されます。2番目には n1 個の要素を使用できます。選択する2個目の要素も集合から除外されます。これで3番目には n2 個の要素を使用できます。列が完成するまでこのプロセスを繰り返して、以下の公式が成立します。

P(n,k)=n×(n1)×(n2)××(nk+1)k 個の因数

次に、使用した数字の値を変更せずに、この公式に掛け算と割り算を適用します。今回は (nk)! を選択したため、以下の公式が成立します。

P(n,k)=n×(n1)×(n2)××(nk+1)×(nk)!(nk)!=n!(nk)!

重複順列の場合、最初の条件は同様です。列の最初の位置には、n 個の要素から1個選択できます。ただし、重複が可能なために、この要素は利用可能な集合から除外されません。従って、列の2番目にも n 個の要素から選択できます。続く3番目以降も同様です。この選択は k 回繰り返されるため、最終的な公式は以下のように成立します。

U(n,k)=n×n××nk 個の因数=nk

順列の例

例:カード1組の順列の数

一般的にトランプ1組に52枚のカードがあります。このカードには異なる配置パターンは何通りあるのでしょうか?使用可能な要素の総数は52個のため、n = 52 です。カードをすべて使用して配置パターンを構成するため、配置パターンに含まれるカードの枚数に該当する列の長さも52枚です。従って、k = 52 になります。すべてのカードは配置パターンで1回だけ使用されるため、重複はありません。これにより、公式を構成する情報がすべて揃っています。

P(52,52)=52!(5252)!=52!0!=52!8.066×1067

これは天文学的な数値ですが、順列と置換計算機を使用すると正確な結果を得られます。ここでは、置換、つまり要素と選択の数が同じだという順列のケースがあるので(というのは、k = n)、公式は簡単な階乗になることができます。52の階乗を計算することでも、正確な数値を得られます。

例:「からくり」という単語から作成可能な3文字のパターン数

4種類の異なる文字で構成され、これらの文字を使用した3文字の異なる配置パターンが、何通りあるのか見てみましょう。今回も各文字を1回だけ使用できるため、公式は P(4,3)=24 になります。24通りの順列は以下の通りです。

からく
からり
かくら
かくり
かりら
かりく
らかく
らかり
らくか
らくり
らりか
らりく
くから
くかり
くらか
くらり
くりか
くりら
りから
りかく
りらか
りらく
りくか
りくら

例:異なる色のボールが7個あり、4人の子供に1個ずつ与える場合のパターン数

この例では、4人の子供のアリサ、カズヒロ、サオリ、タカシにそれぞれボールを1個ずつ与えます。ボールは白、オレンジ、青、緑、黄色、紫、茶色の7個があります。4人の子供にボールを1個ずつ与えるパターンは何通りあるでしょうか?今回も順列の法則が役立ちます。同じボールを2以上の子供に与えることができないため、重複を伴わない順列 P(7,4)=840 を使用します。

従って、ボールを子供全員に与えるパターンは840通りあります。

例:20人の組織で委員長、副委員長、会計担当を選択するパターン数

委員長の候補は20人いますが、1人選択します。委員長が選択されたら、副委員長の候補は19人になります。最後に、会計担当の候補は18人になります。数値を掛け算で計算すると、3つの役割をメンバーに割り当てるパターンが 20×19×18=6840 通りあることがわかります。

一般的に、割り当てるべき異なる役割 k 種類と n 人の候補のグループがある場合、選択パターンはちょうど P(n,k) 通りあります。今回のケースでは、P(20,3)=6840 通りです。

例:ゼロが使用されない場合、4桁のコンビネーションロックにおける「組合せ」の数

数字は0〜9ではなく、1〜9の範囲しか使用できないため、一般的なコンビネーションロックとは異なります。そのため、要素の個数は n = 9 であり、列の長さは k = 4 です。各数字は何度でも使用できるため、今回は重複順列が適用されます。公式は以下の通りです。

U(n,k)=nk=94=6561

可能な「組合せ」は6561通りです。1つの組合せの確認に1秒かかる場合、2時間未満ですべての組合せを確認してロックを解除できます。厳密に言うと、この例題であえて言及した「組合せ」という単語は正しくないことに気づきましたか?数字の順序が重要なため、組合せではなく、重複順列に該当します。

例:パスワードのパターン数

パターン数はパスワードの長さと利用可能な文字数によって異なります。例として、10文字のパスワードのパターン数を計算します。対象となる文字や記号は、小文字と大文字の英字(a〜zとA〜Zを合わせて52文字)、数字(0〜9)、特殊記号(30種類あります)です。

! @ # $ % ^ & * ( ) - _ = + [ ] \ { } | ; : ' " , . / < > ?

合計として、52 + 10 + 30 = 92 種類の文字や記号があります。各文字や記号は何度でも使用できるため、n の k 重複順列が適用されます。公式は以下の通りです。

U(n,k)=nk=9210=43,438,845,422,363,213,824

ユニークなパスワード数は天文学的な規模になります。わかりやすい文字列(例えば、「qwert12345」や「Password0!」など)ではなく、文字や記号をランダムに選択する限り、可能な「組合せ」をすべて確認するだけで、パスワードを解くことは現実的に不可能です。

Pythonでの順列

Pythonのようなプログラミング言語を使用して順列の数を計算する場合、順列の公式を使用してご自身の関数を作成できます。

import math def nPk(n, k): return int(math.factorial(n) / math.factorial(n - k))

同様に、重複順列の公式を使用できます。

def nUk(n, k): return n**k

重複を伴わない順列をすべて生成する場合、以下のように入力します。

from itertools, import permutations def list_perms(n, k): perms = permutations(range(n), k) for p in perms: print(p)

重複順列には、以下のように入力します。

import itertools def list_perms_with_replacents(n, k): for perm in itertools.product(range(n), repeat=k): print(perm)

大数の指数計算機

重複順列の公式が U(n,k)=nk であるため、指数計算機としてこの順列と置換計算機を使用して、数字の冪を計算できます。従来の計算機は天文学的な大数を正確に処理できないため、このような大数(例えば、31000 の正確な数値を簡単に算出できます)を得るときには便利です。「重複を有効にする」にチェックを入れたら、底を n として入力し、冪指数を k として入力します。負の整数以外の数値しか入力できません。

順列と置換計算機の使用方法

この計算機を使用するには、「n」と表記された欄に選択する要素の個数を入力します。列の長さを、下の欄(「k または r」と表記)に入力してください。重複順列に興味がある場合、「重複を有効にする」にチェックを入れます。「計算」ボタンをクリックして計算を実行するか、「消去」ボタンをクリックして値を再入力します。

結果は下の「結果」欄に表示されます。結果が小さい場合は、1行で表示されます。大数には2通りの表示方法があり、指数表記による近似値が上段に表示され、正確な数値が下段に表示されます。計算中にエラーが発生した場合、結果ではなく、エラー内容が表示されます。

計算機には、負の整数以外の数値しか入力できません。重複を伴わない順列の場合、入力した数値は kn を満たす必要もあります。重複順列の場合、 00 は不定となるため、kn の両方に「0」を入力することはできません。入力する数値には上限はありません。n = 8000000000 と k = 1000 による大数(例えば、地球の人口から1000人を選択するパターン数)など、大数を簡単に求めることができます。はるかに大きな結果を求めることも可能ですが、お使いのシステム設定によります。ただし、このような大数を計算すると、長時間かかる場合があります。計算内容がお使いのデバイスのキャパシティを超えた場合、Webサイトがクラッシュする可能性があります。

表示する結果の基数を選択できます。デフォルトは10のため、結果は10進法で表示されます。基数には2〜36の整数を使用できます。ただし、結果のみは選択した基数に基づいて表示されます。nk として入力する数値は常に10進法の形式としてみなされます。

1)結果をクリップボードにコピー、2)結果をファイルとしてダウンロード、3)結果を印刷、4)結果へのリンクをクリップボードにコピー、5)「結果」欄を消去するオプションがあります。このオプションを有効にする場合、「結果」欄の上の対応するアイコンを選択してください。

このコンテンツの引用または埋め込みについて

このWebサイトを出典として引用する前提として、このWebサイトを無料で利用できます(商用目的を含む)。科学技術の文書に引用する場合、以下の引用元を表記することができます。

Narkiewicz Adam 「順列と置換計算機」、https://minesweeper.us/マインスイーパー/順列と置換計算機/、閲覧。

インターネットでこのWebサイトを引用するには、メインのURL(https://minesweeper.us/マインスイーパー/順列と置換計算機/)を使用してリンクを貼ることができます。または、特定の結果にリンクを貼る場合、「クリップボードにリンクをコピー」ボタンを使用します。

iframe要素を使用してこのページをお持ちのWebサイトを埋め込むこともできます。ページに計算機だけを表示して他のコンテンツ(メニューや記事など)をすべて表示しない場合、src属性に以下のURLを使用できます。https://minesweeper.us/マインスイーパー/順列と置換計算機/?iframe=1

クリック可能なリンクの埋め込みと引用により、このページの出典をお持ちのWebサイトに明記してください。アプリをWebサイトに埋め込んだ場合、contact@simiade.com宛てに連絡してその旨をお伝えいただけると幸いです。アプリの変更などに伴って、Webサイトの表示内容を更新する必要がある場合、その変更の旨について連絡させていただく場合があります。

出典

Charalambides, Charalambos A., Enumerative Combinatorics, CRC Press, 2002.

お問い合わせ

質問、意見、提案などありましたら、こちらからフィードバックを送信できます。

郵便でもご連絡いただけます。

Simiade
Adam Narkiewicz
Plac Bankowy 2
00-095 Warszawa
ポーランド
+48 728235409
contact@simiade.com
https://simiade.com/ja/

非負整数しか入力できません。数字の区切りに記号を使用しないでください。数字のみ入力できます。

基数には2〜36の整数を入力してください。

長さ の順列を 個の要素から計算しています。少々お待ちください...

(重複あり)

結果を表示しています...

エラーが発生しました⁚

(基数

重複順列では、n と k に両方とも「0」は使用できません。

順列と置換計算機 | 大数 |

P(,)

U(,)

n には k 以上の数値を入力してください。

n=、k= の順列

基数

重複あり

現在、重複が無効になっています

現在、重複は使用されています

フィードバックが送信されました。ありがとうございます。