Lịch Gregorian ủng hộ năm trong bảy ngày trong tuần trong những năm nhuận. Do đó cơ hội không chính xác là .2/7
Đây thực chất là vấn đề B3 trong Cuộc thi Toán học Putnam năm 1950 :
n được chọn ngẫu nhiên từ các số tự nhiên. Cho thấy xác suất ngày 25 tháng 12 năm là thứ Tư không phải là 1/7.n
Trong Lịch Gregorian , số năm là bội số của là năm nhuận (với ngày), nhưng số năm là bội số của không phải là năm nhuận (và do đó có ngày), ngoại trừ số năm là bội số của là năm nhuận. (Nhiều người trong chúng ta nhớ ngoại lệ gần đây nhất vào ) Điều này tạo ra chu kỳ năm chứa năm nhuận.47×52+2=3661007×52+1=3654002000400400/4−400/100+400/400=97
Điều đặc biệt thú vị là tổng số ngày trong chu kỳ này là một bội số của bảy:
400×(7×52+1)+97×1≡400+97≡71×7≡0mod7.
Điều này cho thấy chu kỳ năm bao gồm toàn bộ số tuần. Do đó, mô hình các ngày trong tuần hoàn toàn giống nhau từ chu kỳ này sang chu kỳ tiếp theo.400
Do đó, chúng tôi có thể giải thích câu hỏi là yêu cầu cơ hội của Chủ nhật khi lấy mẫu ngẫu nhiên và thống nhất từ bất kỳ chu kỳ năm nào của năm nhuận. Một tính toán vũ phu (sử dụng, giả sử, thực tế là ngày 1 tháng 1 năm 2001, là thứ Hai) cho thấy trong số năm nhuận trong mỗi chu kỳ có Chủ nhật. Vì vậy, cơ hội là400 28 97 5353400289753
Pr(53 Sundays)=2897.
Lưu ý rằng điều này không bằng : nó lớn hơn một chút. Ngẫu nhiên, có cùng một cơ hội của Thứ Tư, Thứ Sáu, Thứ Bảy hoặc Thứ Hai và chỉ có cơ hội của Thứ Ba hoặc Thứ Năm.28/98=2/75327/9753
Đối với những người muốn thực hiện các phép tính chi tiết hơn (và có thể không tin tưởng bất kỳ sự đơn giản hóa toán học nào), đây là mã vũ phu tính toán và kiểm tra từng ngày trong tuần trong một năm nhất định. Cuối cùng, nó hiển thị số năm với lần xuất hiện mỗi ngày trong tuần. Nó được viết bằng . 53R
Đây là đầu ra của nó cho chu kỳ :2001−2400
Friday Monday Saturday Sunday Thursday Tuesday Wednesday
28 28 28 28 27 27 28
Đây là mã chính nó.
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)