RPGツクールと数学のブログ

RPGツクールと数学についてのブログです。

〇〇日が△曜日になる確率は1/7ではない

今年の自分の誕生日が何曜日なのか確認してみて、ああ、そういえば生まれた当時の曜日も同じ曜日だったと聞いたことがあるな、という経験ある方おられると思います。

実はあんまり直感的でないのですが、〇〇日が△曜日になる確率って単純に1/7とはならなくて、僅かにズレた値になるのです。例えば13日の金曜日は不吉だとよく言われますが、実は13日は金曜日になる確率が最も高いのです。高いといっても、全体的に0.1%程度のズレしかないのでほとんど誤差みたいなものですけどね。

なぜぴったり1/7にならないのか

現在採用されている暦は、1582年(日本では1873年)に採用されたグレゴリオ暦という400年周期の暦です。今からちょうど400年後は必ず同じ曜日になるし、今年が閏年なら400年後も閏年、平年なら400年後も平年、として、一回りするのです。これも何だか不思議な感じがしますけど、そう決められたものなので、これはそういうものなんでしょう。

ということは、〇〇日が△曜日になる確率を考える上では、分母はこの400年間全体の日数を選べばよいですよね。「〇〇日」は1年間にふつう12回ありますから、12×400=4800日が分母にくることになります。この4800が7で割り切れない数なので、△曜日になる確率はぴったり1/7にはならず、ちょっとだけズレることになるのです。実際、この400年間(=4800日間)で「13日」に割り当てられる曜日の日数は以下のようになります。

日曜日:687日
月曜日:685日
火曜日:685日
水曜日:687日
木曜日:684日
金曜日:688日
土曜日:684日

金曜日が688日あって、一番多いでしょ。だから、13日は金曜日になりやすいのです。(一番確率の低い土曜日と比べても1.006倍の違いしかないですけど……)

〇〇日が△曜日になる確率を求めてみる

それでは一般に、〇〇日が△曜日になる確率を求めてみましょう。色々と場合分けをする必要があって結構タイヘンです。導出過程は飛ばして、末尾の結果だけ確認いただいても問題ありません。

ここでは曜日を以下の表に基づく数値*1で表して、 d日が h曜日になる確率を求めます。

 h=0 … 土曜日
 h=1 … 日曜日
 h=2 … 月曜日
 h=3 … 火曜日
 h=4 … 水曜日
 h=5 … 木曜日
 h=6 … 金曜日

分母(全体の日数)を求める

まずは分母です。 d日が400年間で何日あるかが、分母に相当します。「1日」から「28日」までなら常に1年間に12回ありますけど、「29日」は平年には2月29日が無いので11回しかない、「30日」は平年閏年関わらず、11回しかない、「31日」は7回しかない、ということで、確率を求めたいのが「何日」なのかによって日数が変わることになります。日数は以下のとおりです。

「1日」~「28日」 … 400年間で4800日
「29日」 … 400年間で4497日*2
「30日」 … 400年間で4400日
「31日」 … 400年間で2800日

簡単のため、以降は次の3つの定数 a,b,cを使っていくことにします。

 d \ge 29のとき a=1 d \lt 29のとき a=0
 d \ge 30のとき b=1 d \lt 30のとき b=0
 d =31のとき c=1 d \lt 31のとき c=0

こうしておけば、分母の値は次のように1つにまとめることができます。これが分母になります。

 4800-303a-97b-1600c

分子(h曜日になる日数)を求める

次は分子を求めます。まず、以下が成り立つことを利用します。

① 1/1が日曜日の平年 → 400年間で43年ある
② 1/1が月曜日の平年 → 400年間で43年ある
③ 1/1が火曜日の平年 → 400年間で44年ある
④ 1/1が水曜日の平年 → 400年間で43年ある
⑤ 1/1が木曜日の平年 → 400年間で44年ある
⑥ 1/1が金曜日の平年 → 400年間で43年ある
⑦ 1/1が土曜日の平年 → 400年間で43年ある
⑧ 1/1が日曜日の閏年 → 400年間で15年ある
⑨ 1/1が月曜日の閏年 → 400年間で13年ある
⑩ 1/1が火曜日の閏年 → 400年間で14年ある
⑪ 1/1が水曜日の閏年 → 400年間で14年ある
⑫ 1/1が木曜日の閏年 → 400年間で13年ある
⑬ 1/1が金曜日の閏年 → 400年間で15年ある
⑭ 1/1が土曜日の閏年 → 400年間で13年ある 

このように、実はカレンダーって祝日を除けば、平年or曜日の2通りと、1/1の曜日7通りを掛けた、14通りしかないのです。そのため、この14通りのカレンダーで d日が h曜日になる日数をそれぞれ求めて、上記年数分掛けて全部足せば、分子の値( h曜日になる確率)が得られることになります。

例えば「29日が土曜日になる回数」は、それぞれ次のとおりになります。

① 1/1が日曜日の平年 → 「29日」は2回
② 1/1が月曜日の平年 → 「29日」は2回
③ 1/1が火曜日の平年 → 「29日」は1回
④ 1/1が水曜日の平年 → 「29日」は2回
⑤ 1/1が木曜日の平年 → 「29日」は1回
⑥ 1/1が金曜日の平年 → 「29日」は1回
⑦ 1/1が土曜日の平年 → 「29日」は2回
⑧ 1/1が日曜日の閏年 → 「29日」は2回
⑨ 1/1が月曜日の閏年 → 「29日」は1回
⑩ 1/1が火曜日の閏年 → 「29日」は2回
⑪ 1/1が水曜日の閏年 → 「29日」は2回
⑫ 1/1が木曜日の閏年 → 「29日」は1回
⑬ 1/1が金曜日の閏年 → 「29日」は1回
⑭ 1/1が土曜日の閏年 → 「29日」は3回

①~⑭の年数をそれぞれに掛けて全部足せば641日になるので、この場合は分子が641となるわけです。

一般に d日が h曜日になる場合を考えてみます。平年と閏年の場合でそれぞれ分けて考えます。

平年の日数

平年の場合は、1月1日からm月d日までの曜日のズレは、以下のように決まっています。

1月: (d-1)日分
2月: (d+2)日分
3月: (d+2)日分
4月: (d+5)日分
5月: d日分
6月: (d+3)日分
7月: (d+5)日分
8月: (d+1)日分
9月: (d+4)日分
10月: (d-1)日分
11月: (d+2)日分
12月: (d+4)日分

例えば、1月1日が金曜日なら、3月7日は9日分ずれて、日曜日になります。ここで、「9日分ずれる」というのは3月だけではなく、2月と11月もそうですよね。これは、2月7日と11月7日も日曜日になることを意味します。つまりその年は、「7日」が日曜日になるのは3回ということになるのです。

このように、上記の「☆☆日分」と書かれたところが同一になっている月は、同じ日の曜日が同じになるので、そうなっている個数をカウントすれば、求めたい日にちの曜日がその年に何回現れるかを求められます。

以上のことをふまえて、ある平年の1月1日の曜日が分かっている場合に、その年の d日が h曜日になる個数を表してみましょう。まず、上記の「☆☆日分」が同一になっているものの個数をカウントしてみると次のようになります。

 (d-1)日分になる月: 2
 d日分になる月: 1
 (d+1)日分になる月: 1
 (d+2)日分になる月: (3-a-c)
 (d+3)日分になる月: (1-c)
 (d+4)日分になる月: (2-c)
 (d+5)日分になる月: (2-c)

ただし定数 a,b,cは、分母を求めるときに使った以下の定数です。

 d \ge 29のとき a=1 d \lt 29のとき a=0
 d \ge 30のとき b=1 d \lt 30のとき b=0
 d =31のとき c=1 d \lt 31のとき c=0

もし求めたい曜日( h)が1月1日と同じ曜日なら、求めたい日にち dによる値がそのまま個数になります。

例えば1月1日が金曜日の年で「15日が金曜日になる個数」を求めたい場合は、 d=15, h=6ですね。 d \lt 29なので、a=b=c=0ですから、それぞれ代入してみると、

 14日分= 0日分になる月: 2
 15日分= 1日分になる月: 1
 16日分= 2日分になる月: 1
 17日分= 3日分になる月: 3
 18日分= 4日分になる月: 1
 19日分= 5日分になる月: 2
 20日分= 6日分になる月: 2
(1週間=7日で曜日は一周するため、7日単位でずらせる)

となります。これらが1月1日からの曜日の差になるので、同じく金曜日になるのは 0日分になる月ということで、2個が答えになります。

同様に、「15日が土曜日になる個数」を求めたい場合は、金曜日の1日後が土曜日なので、 1日分になる月である1個が答えになります。

上記の個数表を用いて平年の場合の個数をカウントしてみます。

平年のカレンダーは①~⑦です。③、⑤のときだけ44年、残りは43年、と決まっているので、43×(①~⑦の総和)+(③、⑤のときの日数)のように計算しましょう。(③、⑤のときの日数)を、 Xとします。

 43 \times (2+(2-c)+(2-c)+(1-c)+(3-a-c)+1+1)+X
 =516-43a-172c+X

③と⑤の日数をそれぞれ求めます。③と⑤はそれぞれ、1/1が火曜日の場合と木曜日の場合ですね。曜日を番号に置き換えると、火曜日は 3で、木曜日は 5です。それぞれに d+???を足したものが、求めたい曜日である hになればいいので、この???がそれぞれ何になるのか求めてみると、

■火曜日の場合
 3+(d+??? )=h より ??? =h-d-3

■木曜日の場合
 5+(d+??? )=h より ??? =h-d-5

 となります。 h, dは求めたい曜日と日にちですから、そこから h-dが計算できるので、どの月なのか確定しますね。表にまとめると以下のとおりとなります。

 d-h \equiv 0なら、 (d+2)日分の月と (d+4)日分の月
 d-h \equiv 1なら、 (d+1)日分の月と (d+3)日分の月
 d-h \equiv 2なら、 d日分の月と (d+2)日分の月
 d-h \equiv 3なら、 (d-1)日分の月と (d+1)日分の月
 d-h \equiv 4なら、 (d+5)日分の月と d日分の月
 d-h \equiv 5なら、 (d+4)日分の月と (d-1)日分の月
 d-h \equiv 6なら、 (d+3)日分の月と (d+5)日分の月

 d-h \equiv???は、 d-h 7で割ったあまりが???という意味)

それぞれの月の個数を代入して足したものが、それぞれの d-hの場合の Xになります。

 d-h \equiv 0のとき、 X=5-a-2c
 d-h \equiv 1のとき、 X=2-c
 d-h \equiv 2のとき、 X=4-a-c
 d-h \equiv 3のとき、 X=3
 d-h \equiv 4のとき、 X=3-c
 d-h \equiv 5のとき、 X=4-c
 d-h \equiv 6のとき、 X=3-2c

これでようやく、分子の値のうち平年の場合の分が求まります。

閏年の日数

閏年の場合は2月29日があるので、3月以降が1日ずつずれます。1月1日からm月d日までの曜日のズレは以下のように決まっています。

1月: (d-1)日分
2月: (d+2)日分
3月: (d+3)日分
4月: (d-1)日分
5月: (d+1)日分
6月: (d+4)日分
7月: (d-1)日分
8月: (d+2)日分
9月: (d+5)日分
10月: d日分
11月: (d+3)日分
12月: (d+5)日分

例えば、1月1日が金曜日なら、3月7日は10日分ずれて、月曜日になります。

平年のときと同様、ある閏年の1月1日の曜日が分かっている場合に、その年の d日が h曜日になる個数を表してみましょう。上記の「☆☆日分」が同一になっているものの個数をカウントしてみると次のようになります。

 (d-1)日分になる月: (3-c)
 d日分になる月: 1
 (d+1)日分になる月: 1
 (d+2)日分になる月: (2-b)
 (d+3)日分になる月: (2-c)
 (d+4)日分になる月: (1-c)
 (d+5)日分になる月: (2-c)

この個数表を用いて閏年の場合の個数をカウントしてみます。

閏年のカレンダーは⑧~⑭です。⑨、⑫、⑭のときは13年、⑩、⑪のときは14年、⑧、⑬のときは15年、と決まっているので、ちょっとややこしいですが、13×(⑧~⑭の総和)+(⑩、⑪のときの日数)+2×(⑧、⑬のときの日数)のように計算しましょう。(⑩、⑪のときの日数)を Y、(⑧、⑬のときの日数)を Z、とします。

 13 \times (1+(3-c)+(2-c)+(1-c)+(2-c)+(2-b)+1)+Y+2Z
 =156-13b-52c+Y+2Z

平年のときと同様に Y, Zをそれぞれ求めます。やり方は同じです。それぞれ以下のとおりとなります。

 d-h \equiv 0のとき、 Y=3-2c, Z=4-c
 d-h \equiv 1のとき、 Y=4-b-c, Z=3-c
 d-h \equiv 2のとき、 Y=3-b, Z=4-2c
 d-h \equiv 3のとき、 Y=2, Z=4-2c
 d-h \equiv 4のとき、 Y=4-c, Z=3-b-c
 d-h \equiv 5のとき、 Y=5-2c, Z=3-c
 d-h \equiv 6のとき、 Y=3-2c, Z=3-b

閏年の場合の総和もこれで求まりました。

あとは平年の場合の総和と閏年の場合の総和をそれぞれ足すことで、分子の値が求められます。

 516-43a-172c+X+156-13b-52c+Y+2Z
 =672-43a-13b-224c+X+Y+2Z

 X, Y, Zがそれぞれ求まっているので、場合分けをしてそれぞれ代入すると、分子の値は以下となります。

 d-h \equiv 0のとき、 688-44a-13b-230c
 d-h \equiv 1のとき、 684-43a-14b-228c
 d-h \equiv 2のとき、 687-44a-14b-229c
 d-h \equiv 3のとき、 685-43a-13b-228c
 d-h \equiv 4のとき、 685-43a-15b-228c
 d-h \equiv 5のとき、 687-43a-13b-229c
 d-h \equiv 6のとき、 684-43a-15b-228c

分母と分子が求まったので、確率が求められる

以上から、 d日が h曜日になる確率は次のとおりとなります。これが結果です。 d-h 7で割ったあまりが何であるかによって、次の7通りに分岐します。

 d-h \equiv 0のとき、 \displaystyle \frac{688-44a-13b-230c}{4800-303a-97b-1600c}

 d-h \equiv 1のとき、 \displaystyle \frac{684-43a-14b-228c}{4800-303a-97b-1600c}

 d-h \equiv 2のとき、 \displaystyle \frac{687-44a-14b-229c}{4800-303a-97b-1600c}

 d-h \equiv 3のとき、 \displaystyle \frac{685-43a-13b-228c}{4800-303a-97b-1600c}

 d-h \equiv 4のとき、 \displaystyle \frac{685-43a-15b-228c}{4800-303a-97b-1600c}

 d-h \equiv 5のとき、 \displaystyle \frac{687-43a-13b-229c}{4800-303a-97b-1600c}

 d-h \equiv 6のとき、 \displaystyle \frac{684-43a-15b-228c}{4800-303a-97b-1600c}

ただし定数 a,b,cは以下のとおり。

 d \ge 29のとき a=1 d \lt 29のとき a=0
 d \ge 30のとき b=1 d \lt 30のとき b=0
 d =31のとき c=1 d \lt 31のとき c=0

例えば、13日が金曜日になる確率を求める場合は、 d=13, h=6をそれぞれ代入します。 d-h=13-6=7 7で割ったあまりは 0ですから、 d-h \equiv 0の場合の値になります。 d \lt 29なので a=b=c=0を代入して、 \displaystyle \frac{688}{4800}=0.143333\dotsとなります。 \displaystyle \frac{1}{7}=0.142857\dotsよりは確かに高いですね。

この式を用いて、自分の誕生日が生まれた日の曜日になる確率が高かったのか、確認してみるというのはどうでしょう?? というか、簡単な式にならないか期待して、場合分けだらけのこんな結果になってしまったので、ちょっと残念な気がします……

ちなみに、完全に1/7の確率になるのは「31日が日曜日になる確率」だけだったりします。計算してみてね。

*1:0が土曜日から始まっててヘンですけど、ツェラーの公式という曜日計算の公式で使われる慣習的なものです。

*2:400年間で平年は303回あるので、4800-303=4497