又是13号星期五

今天是2020年3月13日,星期五。在世界上的许多地方,13号星期五被认为是不吉利的。我之前写过关于13号星期五的博客,20122018但是今天我要讲一些新的东西。

注意:不知怎么的,这些数字放错了位置。现在看起来还可以,但我保留了文本中的锚,以防万一。

内容

问题

星期五不仅仅是13号吗不幸的,它也是不太可能?每个月的13号落在星期五的几率有多大?哪一个个月更有可能是13号星期五?哪一个更有可能是13号星期五?

闰年

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

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

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

Y = [2020 2021 2000 2100]';Isleap = [y leapyear(y)]
Isleap = 2020 1 2021 0 2000 1 2100 0

所以,今年是闰年,但明年不是。两年前的世纪之交2000年是闰年,但下一个世纪之交2100年将不是闰年。

日历

闰年规则意味着我们的历法有400年的周期。2000至2399年的日历将在2400至2799年重用。在一个400年的周期中,有97个闰年、4800个月、20871个星期和146097天。所以,日历年的平均天数不是365.25天,而是

dpy = 365 + 97/400
dpy = 365.2425

乍一看,你可能会说任何一个月的13号是星期五的概率是1/7,因为一周有7天,它们都是等概率的。但这并不完全正确。我们可以计算出在日历期间的4800个月中,13号星期五出现的次数。正确的概率是这个数除以4800。因为4800不是7的倍数,所以概率不会减少到1/7。

Datetime

datetime对象,在MATLAB中引入的R2014b,是我们需要的工具。

的文档datetime是可用的在这里,或者,在MATLAB中,使用命令

医生datetime

例如,这是我写这篇文章的日期和时间。

d = datetime (“现在”
d = datetime 13-Mar-2020 21:17:57

我可以指定一个自定义显示格式,其中包括工作日

d = datetime (d,“格式”'eeee, MMMM d, yyyy HH:mm:ss'
d = datetime, 2020年3月13日星期五21:17:57

可用的显示格式包括对国际标准的支持,万博1manbetxISO 8601

Vectorize

我们继续13号星期五吧。和MATLAB中的大多数东西一样datetime与向量。的语句

y = 2000;m = 1:4800;t = 13;v = datetime (y、m、t);

生成行向量4800datetime每个月的13号。前几个和后几个是

流(' % s 'v(1:4))流(“……\ n”)流(' % s ', v (end-3:结束)
2000年1月13日2000年2月13日2000年4月13日…13- 9 -2399 13- 10 -2399 13- 11 -2399 13- 12 -2399

该声明

w =工作日(v);

产生4800个燧石的行向量,位于1(用于周日)和7(用于周六)之间。前几个和后几个是

流(“% 3 d”w(1:4))流(“……”)流(“% 3 d”, w (end-3:结束)
5 1 2 5…2 4 7 2

现在要算出工作日的数目,我们只需要

数量= histcounts (w)
计数= 687 685 685 687 684 688 684

好了。周五的死亡人数为688人,高于本周其他任何一天。任何一个月的13号都更有可能落在周五。

的概率是

概率= / 4800
probb = 0.1431 0.1427 0.1427 0.1431 0.1425 0.1433 0.1425

将这些值与它们的平均值进行比较。

avg =意味着(概率)
avg = 0.1429

4个概率低于平均值,3个概率高于平均值。

分类

让我们用a将计数与一周的天数配对分类变量,在R2013b中引入。

猫=分类(w 1:7 weekday_names);总结(cat)
星期日星期一星期二星期三星期四星期五星期六687 685 685 687 684 688 684

当我们绘制直方图时,x轴上提供了适当的标签。13号星期五是赢家。

直方图(猫,“BarWidth”, 0.5,“FaceColor”甘氨胆酸,颜色(2))(,“ylim”690年[680])标题(“工作日算400年”

"工作日计数,400年"应该在上面。

个月

下面是13号星期五的其他一些分布图。首先,在400年的历法期间个月更有可能是13号星期五?按月份创建一个类别变量。

friday13s = v (w = = 6);cat_months =分类(月(friday13s), 1:12, month_names);

柱状图显示,这个月,3月和其他五个月,13号星期五的数量略高于平均水平。8月和10月最少。

直方图(cat_months“BarWidth”, 0.5,“FaceColor”甘氨胆酸,颜色(3))(,“ylim”(55 59),“ytick”56:58)标题(“星期五,月”

" 13号星期五,月"应该在上面。

哪一个更有可能是13号星期五?看年份的最后一个数字。

year_mod10 =国防部(年(friday13s), 10);数字=分裂(字符串(num2str (0:9)));cat_mod10 =分类(year_mod10、0:9位数);

柱状图显示,今年、2020年和任何其他始于10年的年份,都是最不可能出现倒霉周五的年份。

直方图(cat_mod10“BarWidth”, 0.5,“FaceColor”甘氨胆酸,颜色(4))(,“ylim”(64 73),“ytick”65:72)标题(“黑色星期五,一年的最后一个数字”

" 13号星期五,一年的最后一个数字"应该在上面。

频率

每年有多少个不太可能的星期五?这是一个粗略的直方图,显示了整个400年的日历期间每年的数字。我们可以看到,似乎每年有一到三个,但更具体的分布细节是难以捉摸的。

年=年(friday13s);情节(2000:2399 histc(年,2000:2399),“。”甘氨胆酸)组(,“xlim”(1990 2409),“ylim”[0 4],“ytick”1:3)标题(“每年13号星期五,400年”

"每年13号星期五,400年"应该在上面。

十年

让我们专注于这十年,从2020年到2029年。这里列出了这个范围内的所有16个星期五,13号。

Decade = (years>=2020 & years<2030);disp (friday13s(十年)”)
13- 3- 2020 13- 11 -2020 13- 8 -2021 13- 5 -2022 13- 1 -2023 13- 10 -2023 13- 9 -2024 13- 12 -2024 13- 6 -2025 13- 2 -2026 13- 3- 2026 13- 11 -2026 13- 8 -2027 13- 10 -2028 13- 4 -2029 13- 7 -2029

这是计数的直方图。今年我们看到了两起(今天和11月)。明年只有一个,后年也只有一个。但到2026年将会有3个。这是这十年中仅有的三次。

嘘(年(十年)、2020:0.5:2029“binwidth”甘氨胆酸,0.5)集(get (,“孩子”),“FaceColor”甘氨胆酸,颜色(5))(,“xlim”(2019 2030),“xtick”2020:2029,...“ylim”[0 4],“ytick”1:3)标题(“每年的13号星期五,2020-2029年”

“2020-2029年,每年的13号星期五”应该在上面。

测试

如果你和我在一起这么久,也许你已经准备好做作业了。

  • 解释一下为什么每年至少要有一个13号星期五。
  • 解释为什么任何一年都不能超过3个。
  • 一年中有多少种不同的方式拥有三个?2026年就是一个例子。

现在我最好还是辞职,趁现在还是13号星期五,把这篇文章贴出来。

祝你好运。




发布与MATLAB®R2019b

|

评论

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