順列・組み合わせ計算機
重複あり・なしの順列 (nPr) と組合せ (nCr) を高精度計算。途中式の約分展開、全組み合わせリスト生成、宝くじ当選確率のシミュレーションまで完全網羅。
一度選んだ要素は再度選べません(くじ引きやカードの配布など)。
対称性 C(n, r) = C(n, n-r) と二項係数の行和 (2^n) の幾何学的分布を可視化します。
総パターン数から導出したシャノン情報量(ビット数:H = log₂(パターン数))です。
重複あり・なしの順列 (nPr) と組合せ (nCr) を高精度計算。途中式の約分展開、全組み合わせリスト生成、宝くじ当選確率のシミュレーションまで完全網羅。
一度選んだ要素は再度選べません(くじ引きやカードの配布など)。
対称性 C(n, r) = C(n, n-r) と二項係数の行和 (2^n) の幾何学的分布を可視化します。
総パターン数から導出したシャノン情報量(ビット数:H = log₂(パターン数))です。
重複あり・なしの順列(nPr)と組合せ(nCr)を瞬時に高精度算出。途中式の階乗約分展開、全組み合わせリストの自動生成、ロトや年末ジャンボなどの当選確率シミュレーションまで完全網羅。
選出や並び替えの対象となる全体の母集団(選択肢・メンバー・アイテム)の総数です。重複を許さない一般的な抽出(チームメンバーの選抜やくじ引きの玉など)では、選ぶ個数 r がこの総数を超えることはできません(r ≦ n)。一方、何度でも重複して選べる場合(サイコロの出目やアイスのトッピング選択など)では、選択可能な種類の総数を表します。
母集団から実際に選抜する枠の数、または抽出する要素の個数です。並び順や役職が結果を左右する場合(リレー走者の1位・2位・3位や役員3役の選出など)は順列 P(n, r) の枠数となり、順序に関係なく構成メンバーのみを問う場合(3人のプロジェクト担当者の選抜など)は組合せ C(n, r) の人数となります。なお、r = 0 の場合は「何も選ばない」という1通りの状態を表し、常に 1 となります。
計算の前提となる2つの基準を決定します。第1に「並び順を区別するかどうか」。順列では順序が意味を持ち(「1着-2着」と「2着-1着」は別物)、組合せでは順序を問いません(「リンゴとバナナ」は「バナナとリンゴ」と同等)。第2に「同一要素の再選択を許すかどうか(重複の有無)」。非復元抽出(重複なし)では1度選んだ要素は除外され、復元抽出(重複あり)では選んだ要素を母集団に戻して何度でも再選択できます。
「CHEESE」という英単語の並べ替え(Eが3個)や、赤・青のユニフォームの並び順など、同一の区別がつかない要素を含む集まりを一列に並べるときに使用します。多項係数の公式 n! / (n1! × n2! × ... × nk!) によって、同一要素同士の無意味な入れ替えパターンを割り引くことで、見た目として区別可能な純粋な配置パターン数を導き出します。
どの要素も元の位置に戻らないシャッフルパターン数(完全順列・攪乱順列)を算出します。クリスマス会のプレゼント交換で『全員が自分以外のプレゼントを受け取る』場合や、クローク札を取り違えて『全員が他人の上着を受け取る』確率計算などに用いられます。参加人数が4名を超えると、完全にランダムに配り直したときに全員が他人のものを受け取る確率は、極めて迅速に 1/e(約36.79%)へと収束します。
パスワードや暗号キーの推測困難性を2進数ビット単位で測定した指標です(H = log2(総パターン数))。情報セキュリティにおいて、ビットエントロピーが高いほど総当たり攻撃(ブルートフォース攻撃)に対する耐性が指数関数的に高まります。例えば数字6桁の暗証番号(10^6通り)はわずか約19.9ビット(市販PCで1秒未満で解読)ですが、大小英数字・記号を混在させた12桁のパスフレーズなら約78.6ビットの極めて強固な防御力を誇ります。
組合せ C(n, r) を計算する際、n! のような巨大な階乗を直接計算すると、JavaScriptの通常の数値型では n が 170 を超えた時点で無限大(Infinity)となり計算不能になります。そこで、数学的対称性 C(n, r) = C(n, n - r) を利用して r を小さく保ち、1 から r までの各項について C(n, r) = Π((n - r + i) / i) と掛け算と割り算を交互に逐次実行します。各ステップの除算は常に綺麗な整数となるため、オーバーフローを防ぎながら高速かつ極めて正確に算出できます。
現実の事象が「順列」か「組合せ」かを迷ったときは、「役割や役職を割り当ててみる」テストが有効です。例えば「会長・副会長・会計」や「金・銀・銅メダル」のように、選ばれた2人の立場を入れ替えたときに意味や結果が変わるなら順序を考慮する【順列 P(n, r)】を用います。一方、3人の「共同プロジェクト委員」のようにメンバーを入れ替えても組織全体として何も変わらない場合は【組合せ C(n, r)】を用います。
n 種類の商品から重複を許して r 個を選ぶ場合(例:4種類のフレーバーから合計8個のアイスを選ぶ)、8個の「〇(アイス)」と、フレーバーを区切る3本の「仕切り(|)」を一列に並べるモデルをイメージしてください。公式 C(n + r - 1, r) を適用することで、複雑に見える重複選択が「合計11箇所の配置場所から8個の〇の場所を選ぶ」という標準的な重複なし組合せ問題に帰着します:C(4 + 8 - 1, 8) = C(11, 8) = 165通りとなります。
100人の候補者から98人の合格者を選ぶ行為は、裏を返せば「不合格にする2人を選ぶ」ことと数学的に完全に同義です。したがって、常に C(n, r) = C(n, n - r) が成立します。例えば C(100, 98) をそのまま計算する代わりに、C(100, 2) = (100 × 99) / (2 × 1) = 4,950通り と置き換えることで、手計算はもちろんプログラムの演算負荷も劇的に圧縮できます。常に r を min(r, n - r) に変換して処理するのが鉄則です。
n 人を円卓に着席させる場合、全員が時計回りに1席ずつ移動しても左右の隣人は変わらないため、回転して重なる n 通りの配置は同一とみなします。基準となる1人を固定して回転を止めることで、円順列の総数は n! ではなく (n - 1)! 通りとなります。さらに、キーホルダーやブレスレットのビーズのように「裏返すと同じになる」数珠順列(ネックレス順列)の場合は、鏡像の重複を除くためさらに2で割り、(n - 1)! / 2 通りとなります。
JavaScriptの標準的な倍精度浮動小数点数(64ビット)は、171!(約 1.24 × 10^309)に達した時点で許容最大値を超えオーバーフローします。当ツールは JavaScript の BigInt(任意精度整数演算)エンジンを完全実装しているため、n が最大 10,000 に達する超巨大な階乗・順列・組合せであっても、指数の桁落ちや丸め誤差なしにすべての有効桁を完全に出力します。
重複を許さない非復元抽出(各要素を1回しか使えない条件)では、母集団に存在する数以上の要素を取り出すことは物理的に不可能なため、r > n のときは数学的に P(n, r) = 0 および C(n, r) = 0 と定義されます。サイコロを10回振る場合や4桁の暗証番号のように、同じ数字を何度でも再利用できる場面では、「重複あり(復元抽出)」設定を有効に切り替えて n^r や C(n + r - 1, r) を計算してください。
日本の「ロト6」は43個の数字から6個を選ぶため C(43, 6) = 6,096,454 分の 1 と単一の組合せで求まります。一方、「ロト7」は37個から7個(C(37, 7) = 10,295,472分の1)であり、米国のパワーボールなどの複合型くじは「白球5個(69個中)」と「赤球1個(26個中)」という2つの独立した抽選機を用います。複合抽選の場合は各独立試行の組合せを掛け合わせる必要があり、C(69, 5) × C(26, 1) = 11,238,513 × 26 = 292,201,338 分の 1 となります。
組合せのパターン数は階乗的に爆発します。わずか5要素の並び替えでも120件、10要素で約363万件、15要素では1.3兆件を超え、全件をブラウザ上に描画するとメモリ枯渇により画面がクラッシュします。そのため、本ツールのリスト生成機能は快適な操作性を維持すべく、画面プレビュー表示を最大5,000件に安全に制限しています。数学的な総数は全桁正確に算出し、必要に応じてCSVやテキストでの出力も可能です。
「TOKYO」(Oが2個)や「BANANA」(Aが3個、Nが2個)のように同じ文字が重複して含まれる単語では、通常の nPr を適用すると同一文字同士の入れ替えも別物として数えてしまいます。見た目として区別できる真のアナグラム総数を求めるには、多項順列公式 n! / (n1! × n2! × ... × nk!) を使用し、重複する各文字の階乗で全体を割ることで無駄な重複パターンを除去してください。
決定的な違いは「並び順を区別するかどうか」です。順列(nPr)は選んだ要素の並ぶ順序を考慮するため、金・銀・銅メダルの配分(1位-2位-3位)と(3位-2位-1位)は全く異なる結果として別々にカウントされます。これに対して組合せ(nCr)はメンバーの構成のみに注目し順序は無視するため、「田中・佐藤・鈴木」の3人を選んだグループは、選んだ順番が「鈴木・田中・佐藤」であっても同一の1通りとして扱われます。
重複なし順列は公式 P(n, r) = n! / (n - r)! を用い、n から始めて1ずつ小さくした数字を r 個掛け合わせます。例えば P(5, 3) ならば 5 × 4 × 3 = 60 通りです。重複なし組合せは公式 C(n, r) = n! / [r! × (n - r)!] を用い、順列の結果をグループ内の並び替えパターン数 r! で割って重複を相殺します。例えば C(5, 3) ならば (5 × 4 × 3) / (3 × 2 × 1) = 60 / 6 = 10 通りとなります。
重複組合せの公式は nHr = C(n + r - 1, r) = (n + r - 1)! / [r! × (n - 1)!] で表され、高校数学では「〇と仕切りの問題」として知られています。これは n 種類のカテゴリーから重複を許して r 個を選ぶ場合のパターン数を算出するもので、例えば3種類の和菓子から合計5個を自由に選んで箱詰めする場合、C(3 + 5 - 1, 5) = C(7, 5) = C(7, 2) = 21 通りの詰め合わせパターンが存在します。
組合せ数学において、「0個の要素を並べる方法」は「何も置かない(空集合)」という1通りの状態が存在するためです。また代数的な整合性からも、階乗の漸化式 (n - 1)! = n! / n に n = 1 を代入すると 0! = 1! / 1 = 1 と導かれます。さらに 0! = 1 と定義することで、全要素を一列に並べる順列 P(n, n) = n! / (n - n)! = n! / 0! = n! という基本公式がゼロ除算で破綻することなく綺麗に成立します。
宝くじの当選確率は、抽選器内の総数字数 n と当選番号の個数 r を用いた重複なし組合せ C(n, r) で計算します。例えば日本の「ロト6」では、1〜43の数字から異なる6個を選ぶため、全組合せ数は C(43, 6) = 43! / [6! × 37!] = 6,096,454 通りとなります。したがって1口購入したときの1等当選確率は正確に 6,096,454 分の 1(約0.0000164%)です。また「ロト7」の場合は C(37, 7) = 10,295,472 分の 1 となります。
パスワードの強度計算には重複順列(文字種プール数 N、パスワード長 L としたときの N^L 通り)が用いられます。英小文字のみ(26種)の8桁パスワードの総パターン数は 26^8 ≒ 約2,088億通りで、最新のGPUを用いればわずか数秒で総当たり解読(クラッキング)されます。一方、英大文字・小文字・数字・特殊記号を混在させた94文字種で8桁を設定すると 94^8 ≒ 6.1 × 10^15 通りへと爆発的に増加し、同じ攻撃性能下でも解読に必要な期間は数カ月から数年規模へと跳ね上がります。
二次方程式を解の公式で瞬時に計算。実数解・重解・虚数解(複素数解)の判別式、頂点座標、平方根の根号簡約・約分の導出過程まで完全表示します。
流動資産・投資信託・不動産・各種負債を一括集計し、真の純資産額を瞬時に算出。負債比率の健全性診断から複利資産形成の将来推移まで高精度に予測します。
マイク音声やオーディオファイルからモールス信号をリアルタイムに自動解読。搬送波周波数の自動検出、適応型ノイズ低減、WPM速度計測、音響スペクトログラム表示を搭載しています。
2×2から8×8までの行列式を瞬時に計算。LU分解や余因子展開のステップ別途中式、固有値、トレース、正則性・逆行列の有無まで詳細に解説します。
粗利率・営業利益率・値入率(マークアップ)を瞬時に逆算・シミュレーション。決済手数料や送料の控除、損益分岐点、価格感度マトリクスまで完全対応。
16:8・18:6・一日一食(OMAD)の食事可能時間を自動計算。血糖値・ケトン体・オートファジーの体内代謝ステージをリアルタイムで追跡し、夕食会に合わせた逆算設定やiCalカレンダー連携も完全対応。