昨天在地鐵上,突然想到當天是21号,星期一。打開手機看了一下,2001年1月1号正好是星期一。
于是就有一個有趣的問題:那麼21世紀中(2001-2100),每個月的1号,同時又是星期一的日子大約有多少天:
A. 50 B. 150 C. 350 D. 550
當然,答案是後來設計的。
當時我考慮這個問題,每個月1号是星期一,具有随機性。按機率算,整個世紀共有100*12個1号,1/7是星期一。當時沒有用電腦,估計1200/7約為180左右。
這是今天用Python寫的代碼,運算的結果是172。
from datetime import datetime
def month1st_is_monday(start=2001, end=2100):
num = 0
for year in range(start, end+1):
for mon in (range(1,13)):
d = datetime(year, mon, 1)
if (1==d.weekday()):
num += 1
return num
if '__main__' == __name__:
print month1st_is_monday()
計算了一下,所有1200個一号裡面的分布是這樣的
周日 172個 周一 172個 周二 170個 周三 173個
周四 170個 周五 171個 周六 172個