黑色星期五

我们都知道13号的星期五是不吉利的,但这是不可能的吗?

内容

2012年

我计划在2012年7月的第二周发表这篇文章。这周的星期五是13号星期五,这是我们今年以来的第三个星期五。1月和4月也有。看起来很多。在一年的头七个月里,我们多久会有三个13号星期五?嗯,不经常。它通常每28年才发生一次。下一次将是2040年。但有时,在世纪之交,这种情况会在12年内发生两次。我提到这一切是为了证明我们的日历并不是一个简单的周期性行为。 By the way, not to worry, after this week, it will be 14 months until the next Friday the 13th, in September, 2013.

黑色星期五

这就引出了这篇文章的中心话题:

  • 一个月的13号落在星期五的概率是多少?

一个明显的反应是

  • 简单的问题,概率是1/7。

毕竟,一周有七天,而一个月的第13天同样有可能落在其中的任何一天。嗯,我们会看到,这很接近,但不完全正确。

历法和闰年

闰年使我们的历法成为一个重要的数学对象。这个匿名函数可以实现闰年规则。

leapyear = @ (y)国防部(y, 4) = = 0 &国防部(y, 100) ~ = 0 |国防部(y, 400) = = 0;

这就是说,闰年每四年发生一次,除了跳过不能被400整除的世纪之交。试试几年的数字。

Y = [2012 2013 2000 2100]';disp ([y leapyear (y)])
2012 1 2013 0 2000 1 2100 0

所以,今年是闰年,明年不是,2000年是闰年,2100年不是。

闰年规则意味着我们的历法有400年的周期。从1601年到2000年的日历从2001年到2400年被重用。(不过格里高利历法在1601年还没有发明,所以我说的是如果当时人们可以使用今天的历法,他们就会使用的历法,不过没关系。)

在400年的周期中,有97个闰年、4800个月、20871个星期和146097天。所以日历年的平均天数不是365.25天,而是

格式dpy = 365 + 97/400
dpy = 365.2425

我们可以通过计算在4800个月里发生了多少次,来计算每月的13号是周五的概率。正确的概率是这个数除以4800。因为4800不能被7整除,所以概率不会减少到1/7。

时钟

MATLAB有许多函数用于进行日历和日期的计算。其中许多函数在MATLAB工具箱中,但一些更专业的函数在财务工具箱中。在我关于生物节律的博客中,我们遇到了一些这样的功能。所有函数的基是时钟,它读取系统时钟并返回一个包含6个元素的向量

年、月、日、时、分、秒

前5个元素具有整数值。第六个元素是小数部分,其准确性取决于计算机的内部时钟。这是当我发布这个博客。

c =时钟;流('clock = [%4d %4d %5d %5d %5d %8.3f]\n'c)
时钟= [2012 7 5 11 53 14.258]

Datenum

datenum函数简化了涉及日历的计算时钟向量变成一个值串行日期数字.这个值是自20个世纪以前的参考时间以来的天数和一天的小数时钟都是零。这里有几个使用的例子datenum.如果您自己运行这段代码,您的结果应该是不同的。

现在t =;流(“current_date_number = % 10.3 f \ n”date_string = datestr(t) tday = fix(t) tday_string = datestr(t) [week_day,week_day_name] = weekday(tday)
current_date_number = 735055.495 date_string = 05- july -2012 11:53:14 tday = 735055 tday_string = 05- july -2012 week_day = 5 week_day_name = Thu

日历数

任何一年的日历都由两条信息决定:1月1日的工作日以及这一年是否为闰年。所以我们只需要14个日历。我们可以对所有可能的历法进行编号,单位数字指定开始周的日期,十位数字表示闰年。14个数字是[1:7十一17]

Calendar_number = @(y) weekday(datenum(y,1,1)) + 10*leapyear(y);

如果日历行业使用这种编号方案,下面是未来21年需要的日历。

y = (2012:2032) ';disp ([y calendar_number (y)])
2012 11 2013 3 2014 4 2015 5 2016 16 2017 1 2018 2 2019 3 2020 14 2021 6 2022 7 2023 1 2024 12 2025 4 2026 5 2027 6 2028 17 2029 2 2030 3 2031 4 2032

很可能是13号星期五

我们现在可以使用工作日功能来计算在一个400年的日历周期中,一个月的第13个星期在每个不同的日子里发生的次数。

c = 0 (7);y = 1601:2000M = 1:12 d = datenum([y, M,13]);w =工作日(d);C (w) = C (w) + 1;结束结束c
C = 687 685 685 687 684 688 684

一个柱状图,有一条概率为1/7的线,以及周-日轴标签。

柱(c)轴([0 8 680 690])平均值= 4800/7;Line([0 8],[平均平均],“线宽”,4,“颜色”“黑”甘氨胆酸)组(,“xticklabel”, {“苏”“米”“你”' W '“Th”“F”“Sa”})

星期五的概率是

p = c (6) / 4800;流(“p = % 8.6 f \ n”, p)流(“1/7 = % 8.6 f \ n”, 1/7)
1/7 = 0.142857

所以,一个月的13号更有可能发生在周五,而不是一周中的其他任何一天。我承认只是稍微多一点,但仍然……




发布MATLAB®7.14

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。