朝起きるのがつらい寒さになってきましたね。皆さんお元気ですか?キルナです!今回は高校で習う場合の数を勉強していきましょう。
事象

上図は,ベン図と言われるものです。これは,事象の共通点を可視化するのに便利です。頭がこんがらがってきたら,ベン図を描いてみるのがお勧めです。
それでは,まずは記号の説明をしましょう。全事象\(U\)をさいころの目,事象\(A\)を2の倍数,事象\(B\)を3の倍数とします。すると,全事象\(U\)は{1,2,3,4,5,6}の6通り,事象\(A\)は{2,4,6}の3通り,事象\(B\)は{3,6}の2通り,事象\(A\)と\(B\)に共通してあるのは{6}の1通り,事象\(A\)か\(B\)の少なくとも一方にあれば良いのなら{2,3,4,6}の4通り,事象\(A\)でも\(B\)でもないのは,{1,5}の2通りありますよね。これを,\(n()\)という記号を使って,それぞれ
$$ n(U)=6,n(A)=3,n(B)=2,n(A\cap B)=1,n(A\cup B)=4,n(\overline{A\cup B})=2 $$
と表します。\(A\cap B\)は「AかつB」,\(A\cup B\)は「AまたはB」と読みます。MATLABでは,それぞれ「A && B」,「A || B」と表記します。また,余事象\(\overline{A}\)は,Aでない事象を表し,\(\overline{A\cup B}\)は「AまたはBでない」と読みます。MATLABでは,「~(A || B)」と表記します。
練習問題
さいころを2つ投げて,出た目をそれぞれ\(x,y\)と置きます。この時\(n(A),n(B)\)を以下のように定義します。
\(n(A)\):\(x+y\)が2の倍数
\(n(B)\):\(x+y\)が3の倍数
この時,次の事象の場合の数を求めましょう
(1) \( n(A)\)
(2) \( n(B)\)
(3) \( n(A\cap B)\)
(4) \( n(A\cup B)\)
(5) \( n(\overline{A}\cap B)\)
(6) \(n(\overline{A}\cup\overline{B})\)
(6)だけ解説しておきます。他の問題は以下のMATLABのコードを参考にしてください
MATLAB
% 初期設定
total_outcomes = 6*6; % 2つのさいころの全ての組み合わせ (6 * 6 = 36)
% 条件を満たす組み合わせをカウントする変数
nA = 0;
nB = 0;
nA_and_B = 0;
nA_or_B = 0;
nA_not_and_B = 0;
nA_not_or_B_not = 0;
% すべての組み合わせをチェック
for x = 1:6
for y = 1:6
sum_xy = x + y;
A = mod(sum_xy, 2) == 0;
B = mod(sum_xy, 3) == 0;
if A
nA = nA + 1;
end
if B
nB = nB + 1;
end
if A && B
nA_and_B = nA_and_B + 1;
end
if A || B
nA_or_B = nA_or_B + 1;
end
if ~A && B
nA_not_and_B = nA_not_and_B + 1;
end
if ~A || ~B
nA_not_or_B_not = nA_not_or_B_not + 1;
end
end
end
% 結果表示
fprintf('n(A): %d\n', nA);
fprintf('n(B): %d\n', nB);
fprintf('n(A && B): %d\n', nA_and_B);
fprintf('n(A || B): %d\n', nA_or_B);
fprintf('n(~A && B): %d\n', nA_not_and_B);
fprintf('n(~A || ~B): %d\n', nA_not_or_B_not);
(6)は,ド・モルガンの法則
$$ \overline{A}\cup\overline{B}=\overline{A\cap B} $$
を用いて解くことが出来ます。
まず,\(x+y)\)は\(6\times 6=36\)通りあります。九九の100マス計算の36マス足し算版ということですね。この中で,\(A\cap B\)は,(3)で求めていますが,\({(1+5,2+4,3+3,4+2,5+1,6}\)の6通りです。よって,\(n(\overline{A\cap B})=36-6=30\)通りが答えとなります。
階乗と順列
結論から言うと,一列に数字が書かれたカードを並べる時,トランプ52枚を一列に並べる順列の場合の数は52!通りあります。
これがどういう意味か,説明します。まず,52枚のトランプを左から順に一列に並べる時,一番左に置くことが出来るトランプは52枚あります。この52枚の中から1枚(例えばハートのA)を置いた後,左から2番目に置くことが出来るカードは(ハートのAを除く)51枚です。さらに,左から3番目に置くことができるカードは50枚,4番目は49枚,5番目は48枚……50番目は3枚,51番目は2枚,52番目は1枚となります。
つまり,52枚のトランプを左から順に一列に並べる方法(場合の数)は,
$$ 52!=52\times 51\times 50\times 49\times 48\times \cdots \times 3\times 2\times 1 $$
となります。
じゃあ,この計算結果はいくつになりますか?と言われると,手計算じゃ絶対厳しいし,電卓でも時間がかかりますよね。こういう時にはMATLABを重宝します!コマンドウィンドウで「factorial(52)」と打ってEnterキーを押せば,一発です。あざす!!
ちなみに,答えはMATLAB上では
>>factorial(52)
ans =
8.0658e+67
と出てきますが,これは\(8.0658\times 10^{67}\)通りということです笑。0が67個もつくほどのとてつもなく大きい数字になりますね。くれぐれもトランプを並べながら場合の数を数え上げないようにしてください。
それでは,52枚すべてをならべるのではなく,この52枚から12枚を引き抜いて一列に並べる場合の数は何通りあるでしょうか?
これは,
$$ {}_{52}\mathrm{P}_{12}=\frac{52!}{52!-12!} $$
となります。
MATLAB
%順列の計算 n = 52; r = 12; result = factorial(n) / factorial(n - r); disp(result);
組み合わせ
組み合わせは,同じような階乗計算であるため,例と式だけ紹介します。
52枚のトランプから12枚のカードを取り出す場合の数は,
$$ {}_{52}\mathrm{C}_{12}=\frac{{}_{52}\mathrm{P}_{12}}{12!}=\frac{52!}{12!\cdot(52-12)!} $$
となります。一列に並べない分,場合の数は順列の場合よりも少なくなります。



コメント