見出し画像

【プレゼント交換】Excelで確率の問題を解く!②

本シリーズでは、Excelの関数を用いて使って確率の問題を解いていきます。コードをコピペしながら読み進めていただければ幸いです。最後に、この記事をもとに作成したExcelファイルをご用意しています!サクッと試したい方、きれいなレイアウトで確認したい方はぜひご利用ください!

【問題】5人でプレゼント交換をするとき、すべての人が自分以外のプレゼントをもらえる確率


5人の名前をそれぞれAさんからEさんとしましょう。受け取るプレゼントはランダムで決まり、自分のプレゼントを受け取る可能性もあるとします。つまり、次のようなパターンがありえます。

パターン①:すべての人が自分以外のプレゼントをもらえる
名前   : A B C D E
プレゼント:B C A E D
パターン②:1人以上が、自分のプレゼントをもらう
名前   :A B C D E
プレゼント:B A C E D

パターン②の例では、Cさんが自分のプレゼントを受け取ってしまっています。今回の問題は、パターン①に該当するケースの発生回数を数えることで解くことができそうです。

①モデルを考える

参加者それぞれが、誰からのプレゼントを貰うかはランダムです。AさんがAさんのプレゼントを貰う確率も、他の人から貰う確率も等しく1/5となります。前回はさいころを複数回振る試行を考えましたが、今回はそれとはモデルが少し異なります。それは、同じプレゼントを複数の人が受け取ることはありえない、という点です。

さいころでは、1回1の目が出たらもう2度と同じ目は出ない、なんてことはありません。一方で、プレゼント交換では誰かがAさんのプレゼントを受け取ったら、他の4人はAさんのプレゼントを受け取ることはありません。

ですので、「重複しない乱数」をExcelで表現する必要があります。

A10セル
=ROW()-9
B10セルからF10セル
=RAND()
G10セル
=CHOOSE(RANK(B10, $B10:$F10), "A", "B", "C", "D", "E")
G10セルを選択し、右下をK10セルまでびーっと引っ張る

RAND関数は、0から1での実数をランダムに返します。RANK関数は、範囲の中で特定のセルが何番目に大きいかを返します。この2つの関数を組み合わせることで、「重複しない乱数」を表現しています。

②判定する!

次に、発生させた乱数を判定しましょう。今回は「全員が自分のではないプレゼントを受け取っているか」、そうではないかで分類していきます。

まずは、判定用の数字を準備しましょう。

G9セル
A
H9セル
B
I9セル
C
J9セル
D
K9セル
E
L10セル
=AND($G$9<>G10,$H$9<>H10,$I$9<>I10,$J$9<>J10,$K$9<>K10)

AND関数は、条件式をいくつも引数にとることができます。全ての条件式がTRUEの場合、AND関数がTRUEを返します。条件式の中に1つでもFALSEがあれば、AND関数の戻り値もFALSEになります。今回の場合、判定用のG9セルからK9セルと、乱数のG10セルからK10セルを比較しています。5つ全て一致しない場合(<>はノットイコールを表しています)に、TRUEを返します。

③集計する!

N3セル
=COUNTIF(L:L, TRUE)
N4セル
=MAX(A:A)
N5セル
=N3/N4

N3セルは、全員が自分以外のプレゼントをもらえた回数、N4セルは試行回数を表しています。N3セルをN4セルでわることで、確率を表現しているのがN5セルです。

前回同様、次の操作をすることで試行回数をどんどん増やすことができます!

A10セルからL10セルの範囲を選択し、
選択範囲の右下の角をぐいーっと下にひっぱる!


それでは、最後に前回と同様理論値との比較を行いましょう。

N6セル
=1/2 -1/6 + 1/24 - 1/120
N7セル
=N6-N5

N6セルが理論値を表し、N6セルとN5セルの差分を表すのがN7セルになります。

【数学的な話】確率について少し解説

この確率は、完全順列や撹乱順列という名前で呼ばれます。今回は5人のプレゼント交換を扱いましたが、参加人数をどんどん増やしていくと、全員が自分以外のプレゼントをもらえる確率はe(ネイピア数)の逆数にどんどん近づいていきます!

【完成品】きれいなエクセルファイル


今回の手順をもとにしたExcelファイルはこちらです!サクッと試してみたい方、時間の取れない方、きれいなレイアウトで見たい方はぜひご活用ください!

サンプルは100回の試行をした状態ですので、いろいろな回数で試してみてください!


いただいたサポートは、主に本の購入費用になります。まとまった金額になりましたら、noteの投稿などを通じて、皆様に還元していければと思っております。