スプレッドシートのMULTINOMIAL関数の使い方|多項係数

スポンサーリンク

「10人を3人・3人・4人の3グループに分けると、何通りあるんだろう?」

グループ分けのパターン数を求めたい場面って、意外とありますよね。

COMBIN関数だけだと、グループの数だけ計算を繰り返す必要があって面倒です。

そんなときに使えるのがMULTINOMIAL関数です。各グループの人数を指定するだけで、分け方の総数を一発で計算してくれます。

この記事では基本の書き方からグループ分け・文字の並べ替えなどの活用例、FACT関数やCOMBIN関数との関係まで紹介します。

スプレッドシートのMULTINOMIAL関数とは?

MULTINOMIAL関数(読み方: マルチノミアル関数)は、多項係数を返す関数です。

名前は英語の「multinomial(多項式)」からきています。

多項係数とは、次の計算式で求める値のことです。

各引数の合計の階乗 / 各引数の階乗の積

たとえば =MULTINOMIAL(2, 3) と書くと「(2+3)! / (2! x 3!) = 120 / 12 = 10」が返ります。

ちょっとむずかしく見えますが、やっていることはシンプルです。「全体を決まった人数ずつのグループに分けるとき、何通りの分け方があるか」を求めているんですね。

MULTINOMIAL関数にできることをまとめると、次のとおりです。

  • グループ分けの総パターン数を求める
  • 同じ文字を含む文字列の並べ替えパターン数を計算する
  • 多項分布の確率計算に使う
  • FACT関数を使った手計算をまとめて処理する

NOTE

MULTINOMIAL関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。

MULTINOMIAL関数の書き方(構文と引数)

基本構文

=MULTINOMIAL(値1, 値2, ...)

カッコの中に、各グループの人数(要素数)をカンマ区切りで入れます。

引数の説明

引数必須/任意説明
値1必須1番目のグループの個数。0以上の整数を指定する
値2, …任意2番目以降のグループの個数。最大255個まで指定可能

引数を1つだけ指定した場合は「n! / n! = 1」となり、必ず1が返ります。

スプレッドシートでのMULTINOMIAL関数の基本的な使い方

もっともシンプルな使い方

2つのグループに分けるパターンです。

=MULTINOMIAL(2, 3)

結果は「10」です。5人を2人と3人のグループに分ける方法は10通りあります。

この計算は (2+3)! / (2! x 3!) = 120 / (2 x 6) = 10 です。

=MULTINOMIAL(3, 3)

結果は「20」です。6人を3人ずつの2グループに分ける方法ですね。

=MULTINOMIAL(1, 1, 1)

結果は「6」です。3人を1人ずつ3つに分ける方法は6通りです。これは3人の並べ方(3! = 6)と同じですね。

セル参照を使う

A1に「3」、B1に「3」、C1に「4」が入っているとします。

=MULTINOMIAL(A1, B1, C1)

結果は「4200」です。セル参照を使えば、人数を変えるだけで結果が自動更新されます。

特殊なケース

引数を1つだけ指定した場合は、常に「1」が返ります。

=MULTINOMIAL(5)

結果は「1」です。5! / 5! = 1 ですね。

引数に0を含めた場合は、そのグループを無視したのと同じ結果になります。

=MULTINOMIAL(3, 0, 4)

結果は「35」です。これは =MULTINOMIAL(3, 4) と同じ結果ですね。0! = 1 なので、計算に影響しません。

MULTINOMIAL関数の実践的な使い方・応用例

グループ分けの総パターン数を求める

10人を3人・3人・4人の3グループに分ける方法は何通りあるか求めてみましょう。

=MULTINOMIAL(3, 3, 4)

結果は「4200」です。4,200通りもの分け方があります。

この計算をFACT関数で書くとこうなります。

=FACT(10) / (FACT(3) * FACT(3) * FACT(4))

結果は同じく「4200」です。MULTINOMIAL関数のほうがずっとシンプルですよね。

TIP

2グループへの分け方はCOMBIN関数でも計算できます。3グループ以上に分ける場合はMULTINOMIAL関数が便利です。

同じ文字を含む文字列の並べ替えパターン数

「MISSISSIPPI」のように同じ文字を含む文字列の並べ替えパターン数を求めてみましょう。

MISSISSIPPIは全11文字で、内訳は次のとおりです。

  • M: 1個
  • I: 4個
  • S: 4個
  • P: 2個
=MULTINOMIAL(1, 4, 4, 2)

結果は「34650」です。34,650通りの並べ替えパターンがあります。

もし11文字がすべて異なる文字なら、並べ替えは11! = 39,916,800通りです。同じ文字があると重複するパターンが出るため、ぐっと少なくなるんですね。

社員旅行の部屋割りを計算する

12人の社員を4人部屋が3室に振り分ける方法は何通りか調べてみましょう。

=MULTINOMIAL(4, 4, 4)

結果は「34650」です。

TIP

この計算は「区別のあるグループ」への分け方です。部屋に番号がついている場合の計算ですね。「部屋の区別がない場合」は、この結果をグループ数の階乗で割ります。3室なら 34650 / 3! = 5775通りです。

サイコロの確率計算(多項分布)

サイコロを6回振って、1が2回・2が1回・3が3回出る確率を求めてみましょう。

まず、この出方のパターン数をMULTINOMIAL関数で計算します。

=MULTINOMIAL(2, 1, 3)

結果は「60」です。6回の試行のうち「どの回に1が出て、どの回に2が出て、どの回に3が出るか」のパターンが60通りあります。

全パターン数は6の6乗(46,656通り)です。各目の出る確率は1/6なので、次のように計算できます。

=MULTINOMIAL(2, 1, 3) * (1/6)^6

結果は「0.00129…」です。約0.13%の確率ですね。

よくあるエラーと対処法

MULTINOMIAL関数で発生しやすいエラーをまとめました。

エラー原因対処法
#NUM!負の数を指定した(例: MULTINOMIAL(-1, 3))0以上の整数を指定する
#VALUE!引数に文字列が入っているセル参照先が数値かどうか確認する
#ERROR!構文ミス(カッコ忘れ等)数式の入力内容を見直す

負の数を指定したとき

もっとも多いエラーです。グループの人数にマイナスはありえませんよね。

=MULTINOMIAL(-2, 3)

この数式は#NUM!エラーになります。セル参照の場合は、参照先に負の値が入っていないか確認してみてください。

引数に小数を指定したとき

小数を指定してもエラーにはなりません。小数点以下が切り捨てられて計算されます。

=MULTINOMIAL(2.7, 3.2)

この数式は =MULTINOMIAL(2, 3) と同じ結果で「10」を返します。

MULTINOMIAL関数と似た関数との違い・使い分け

関数動作用途
MULTINOMIAL多項係数を返す3グループ以上への分け方
FACT階乗(n!)を返す並べ方の総数・確率計算
COMBIN組み合わせの数(nCr)を返す2グループへの分け方・抽選
FACTDOUBLE二重階乗(n!!)を返す統計・物理の特殊計算

MULTINOMIAL関数とFACT関数の関係

MULTINOMIAL関数は、内部的にFACT関数の計算をまとめたものです。

MULTINOMIAL(a, b, c) = FACT(a+b+c) / (FACT(a) FACT(b) FACT(c))

たとえば =MULTINOMIAL(2, 3, 4) は次のFACT関数の計算と同じ結果になります。

=FACT(9) / (FACT(2) * FACT(3) * FACT(4))

どちらも結果は「1260」です。MULTINOMIAL関数のほうが数式がシンプルですね。

MULTINOMIAL関数とCOMBIN関数の関係

MULTINOMIAL関数の引数が2つの場合、COMBIN関数と同じ結果になります。

=MULTINOMIAL(3, 7)

結果は「120」です。

=COMBIN(10, 3)

こちらも結果は「120」です。

どちらも「10人を3人と7人に分ける方法」を計算しています。2グループへの分け方ならCOMBIN関数、3グループ以上ならMULTINOMIAL関数を使うのがおすすめです。

MULTINOMIAL関数とFACTDOUBLE関数の違い

FACTDOUBLE関数は二重階乗(n!!)を返す関数で、MULTINOMIAL関数とは計算内容がまったく異なります。

  • MULTINOMIAL: 多項係数(グループ分けのパターン数)
  • FACTDOUBLE: 二重階乗(1つおきに掛け算した積)

名前が似ている部分もありますが、用途は別物です。

Excelとの違い

MULTINOMIAL関数はExcelとGoogleスプレッドシートで完全に同じ動作です。

項目ExcelGoogleスプレッドシート
構文=MULTINOMIAL(数値1, …)=MULTINOMIAL(値1, …)
動作多項係数を返す多項係数を返す
小数の扱い小数点以下を切り捨て小数点以下を切り捨て
エラー時#NUM! / #VALUE!#NUM! / #VALUE!

引数名の表記が若干異なるだけで、機能は完全に同じです。

まとめ

MULTINOMIAL関数は、多項係数を求める関数です。

ポイントを整理します。

  • 構文は =MULTINOMIAL(値1, 値2, ...) で、各引数の合計の階乗 / 各引数の階乗の積を返す
  • グループ分けのパターン数を一発で計算できる
  • 同じ文字を含む文字列の並べ替えパターン数にも使える
  • 引数が2つならCOMBIN関数と同じ結果になる
  • FACT関数で同じ計算ができるが、MULTINOMIAL関数のほうがシンプル
  • FACTDOUBLE関数とは計算内容がまったく異なる

まずは =MULTINOMIAL(3, 3, 4) で「10人を3人・3人・4人に分ける方法 = 4,200通り」から試してみてください。

タイトルとURLをコピーしました