如何找到闰年额外星期日的概率?

机器算法验证 可能性 自习
2022-03-23 14:04:50

闰年有 53 个星期日的可能性有多大?

根据我的试验,会是 2/7 吗?由于闰年的 366 天意味着 52 周和多 2 天,所以从额外的两天来看,星期日的概率是 2/7。

PS:这是我在一本基本统计书中发现的一个问题。

2个回答

公历在闰年有七个工作日中的五个。因此机会并不准确2/7.

这本质上是1950 年普特南数学竞赛中的 B3 题:

n是从自然数中随机选择的。证明一年 12 月 25 日的概率n是星期三不是 1/7。


公历中,年份是4是闰年(与7×52+2=366天),年份是的倍数100不是闰年(因此有7×52+1=365天),但年份是的倍数除外400是闰年。(我们中的许多人都记得最近的例外情况2000.) 这会创建一个400年周期包含400/4400/100+400/400=97闰年。

特别有趣的是,这个周期的总天数是七的整数倍:

400×(7×52+1)+97×1400+9771×70mod7.

这表明400年周期包括整数周。因此,一周中的几天的模式从一个周期到下一个周期是完全相同的。

因此,我们可以将这个问题解释为寻求机会53周日从任何400- 闰年的周期。蛮力计算(例如,使用 2001 年 1 月 1 日是星期一这一事实)表明2897每个周期的闰年都有53星期日。因此机会是

Pr(53 Sundays)=2897.

请注意,这不等于28/98:它稍大一些。顺便说一句,有个星期三、星期五、星期六或星期一的机会相同,而只有的机会有个星期二或星期四。28/98=2/75327/9753


对于那些想要进行更详细计算(并且可能不相信任何数学简化)的人来说,这里是计算和检查给定年份的一周中的每一天的蛮力代码。最后,它显示一周中每天出现它写在. 53R

这是周期的输出:20012400

Friday    Monday  Saturday    Sunday  Thursday   Tuesday Wednesday 
    28        28        28        28        27        27        28 

这是代码本身。

leapyear <- function(y) {
  (y %% 4 == 0 & !(y%% 100 == 0)) | (y %% 400 == 0)
}
leapyears <- seq(2001, length.out=400)
leapyears <- leapyears[leapyear(leapyears)]
results <- sapply(leapyears, function(y) {
  table(weekdays(seq.Date(as.Date(paste0(y, "-01-01")), by="1 day", length.out=366)))
})
rowSums(results==53)

是的,你的推理是正确的。从长远来看,闰年几乎同样可能从一周中的任何一天开始。因此,包括星期日在内的额外 2 天的机会约为 2/7。

w huber 指出,公历的一个怪癖导致闰年的开始日期分布不太均匀,因此 53 个星期日的真实概率比 2/7 大 1% 左右。但是,几乎可以肯定,2/7 是您的统计教科书的作者希望您找到的答案。