最近,越来越多的人经历了从“羊”到“羊康”的过程,都在关心正快速恢复的社会运转是不是能持久保持?第二波、第三波危害是不是降低很多?那学过编程的你,可以做些什么呢?
小畅君根据本次疫情发生情况创作了观测疫情的编程项目,通过HappyCoding编程来模拟和探索疫情的发展规律,下面就带大家看一看吧~
(点击图片打开作品)
下面让我们看一看这个作品的创作过程与背后逻辑吧:
一、需求分析:
我们需要用程序模拟病毒传播的过程,推测出一个城市每个阶段的生病人数,为防疫抗疫尽一份力!
二、利用计算思维进行系统分析:
1、分解问题:把需求分解成
(1)模拟病毒传播;
(2)用大数据展示每个时期生病人数情况。
2、模式匹配:
(1)用小球运动碰撞模型模拟病毒的传播:
A.小球模拟人,三种颜色代表人的三个状态健康无抗体、生病、健康有抗体,小球的运动代表人的流动;
B.小球的运动区域和数量模拟所在城市及人口密度,比如一个6500平方公里940万人口城市,按密度模拟出254个小球,每个小球代表3.71万人;
C.1秒模拟1天。
(2)用折线图展示每个时期生病人数。
3、抽象出流程及逻辑:
(1)当健康无抗体碰到带病,有90%概率从健康状态变到带病状态;
(2)等待2秒(模拟等待2天),然后发现自己生病了,速度降到了0(刚染上前2天不知道,到处跑,第3天有症状了,在家了);
(3)等待6+随机数秒(模拟在家抗病6+n天,好了!每个人状态不一样,抗病时间不同);
(4)好了后,成为免疫状态;
(5)免疫状态下,有3%的概率复阳,即绿球碰到红球,有3%的概率再次变成红球,复阳则重新走生病逻辑;
(6)免疫状态下,正常情况,等待90+随机数秒(根据医学判断,人免疫力能有3-6个月,此处模拟);
(7)免疫力过后,又变成健康无抗体状态;
(8)把每秒有多少红色小球记录到列表中(即每天有多少人是生病状态)。
三、编程实现以上流程及逻辑。
四、测试运行,观察结果是否满足需求。
让我们再想一想?为什么第二次及以后高峰的生病人数远低于第一次?
答:第6点就是第二次及以后高峰为什么远低于第一次高峰的核心原因,因为第一次高峰基本上所有人都没有抵抗力,会同时感染。而以后,人的免疫力的消失或生成是不同时的,所以你身边始终都有抵抗力屏障存在,导致不可能再爆发像现在一样的高峰传染。