疫情肆虐下,程序员用代码告诉你为什么千万不要出门!
这两天,一个视频火了起来。
视频地址:
https://www.bilibili.com/video/av86478875/
这是一个使用 Java 语言编写的肺炎仿真程序,从统计学的角度来说,能够从一定程度上模拟新冠肺炎病毒扩散及被控制的趋势。
现在,作者已经将代码开源到 GitHub 上,笔者特此 download 下来与诸君分享。
GitHub 地址:
https://github.com/KikiLetGo/VirusBroadcast
在代码中,我们假定一个城市是一个 600 x 600 的正方型。在这个城市中,每一个人为一个 3*3 大小的圆形的点。在每一个城市中,人口所在位置在统计学上都有相应的规律。在这里,假定城市中有 5000 个人,这 5000 个人以城市中心按照正态分布的方式,随机地分布在城市的各个角落。
城市中人口正态分布情况
代码如下:
Random random=new Random();int x=(int) (100 * random.nextGaussian() + city.getCenterX());int y=(int) (100 * random.nextGaussian() + city.getCenterY());Person person=new Person(city, x, y);
在新型肺炎期间,根据肺炎的信息,我们可以知道,病毒存在潜伏期,医院会对患者进行收治。本文中我们对每一个人的状态进行简化,分为以下四个状态:
正常潜伏期确诊在医院治疗中其中三个状态中,人是可以自由活动的,当然,关于人的移动,此处的处理逻辑也是简化为一个正态分布的随机移动。以下代码为人随机移动到的目的地的位置:
// 根据流动意愿计算当前人是否需要流动publicbooleanwantMove(){double value=sig * new Random().nextGaussian() + Constants.u;return value > 0;}// 计算人流动到的目标位置double targetX=targetSig * new Random().nextGaussian() + targetXU;double targetY=targetSig * new Random().nextGaussian() + targetYU;moveTarget=new MoveTarget((int) targetX, (int) targetY);
除了处理分配位置和随机移动,还有一个被感染的函数。当我们在城市中移动的时候,当周围的人存在携带病毒的人,我们就有一定的概率被感染,以下代码描述了这个过程:
float random=new Random().nextFloat();if (random < Constants.BROAD_RATE && distance(person) < SAFE_DIST) {this.beInfected();}
当然,医院和国家的响应,会让我们在感染数上升的同时,避免外出,所以在计算人移动的过程中,添加一个辅助变量来表示人外出移动的意愿,随着感染数的上升,人们的移动意愿就会逐渐降低,为了简化程序,笔者在此添加了一个线性变化的流动意愿修改。随着床位被占据得越来越多,人们的流动意愿就越来越低。
publicintusedBed(){int result=0;for (Bed bed : beds) {if (!bed.isEmpty()) { result++; } }return result;}// 更新流动意向publicvoidupdateU(){int subCount=Constants.BED_COUNT / 5;int used=usedBed();if (used > subCount) { Constants.u=-0.99f; }float mu=1.98f * used / subCount; Constants.u=0.99f - mu;}
下列动图就是从最开始很小一部分感染群体在不断地流动中所带来的大规模扩散模拟,当政府进行管控,外出人员大幅减少之后,整个疫情得到了有效的控制的演示,我们可以明确地得出一个结论,那就是「不出门、不串门」是非常行之有效的举措。正如 UP 主在视频最后所说的那句话 —— 「对本次疫情起到主导作用的,恰恰就是我们普普通通的每一个人」。
上一篇:感动!离“新冠病毒”最近的媒体人
下一篇:人社部解答:疫情防控期间,工作这样找
街舞资讯热门
- 福清佾舞,入选福建省第五批国家级非遗代表性项目拟推荐名单
- 医护跳天鹅舞送治愈病人出院,中国人自娱自乐的天性藏不住了
- 韩国航班落地威海,167人全部被隔离14天,暂不提升中国入境限制
- 赵奕欢为了红太拼了,穿比基尼跳钢管舞,“马蜂臀”尽显火辣身材
- 《朋友请听好》谢娜独挑“易燃装置”和易烊千玺battle俏皮女团舞
- 你大妈还是你大妈,朝阳大妈的无接触广场舞火了!!
- 关于舞蹈基本功
- 集歌、舞、乐为一体的艺术表现形式——楚国崇巫之风
- 易烊千玺和谢娜PK舞技,大胆挑战女团舞萌坏何炅,谢娜输得好惨
- 农村女孩的追梦路:爱跳就大胆的舞起来吧!
- 平顶山叶县电视台《广场舞秀》方案解读
- 易烊千玺与谢娜pk女团舞,易烊千玺跳得更有女人味,表情亮了
- 大妈自创无接触广场舞“云跳舞”宣传防疫知识
- 五大民族舞蹈的区别,你知道多少
- 广场舞适合每个人
- 体育舞蹈理论基础知识--体育舞蹈发展概况
- 超模AA穿亮钻吊带配镂空喇叭裤,却像是复古夜店舞女,绝美性感
- 外观精致时尚的新一代奔驰GLA于日内瓦车展亮相
- 时尚到底是什么呢?
- 火爆时装周的香芋紫,又飒又仙又好搭,2020年时尚达人必Pick
- 甜美女孩总让人有好感!碎花短连衣裙优雅大气,土妞秒变时尚达人
- 白雪公主Lily Collins放开了,真空穿西装配短裤,时尚性感有魅力
- 占据时尚圈半壁江山的单品,显高又显瘦,短款上衣竟如此火爆?
- Dior春夏高定秀 | 女性的战歌,时尚的崛起
- 16套最值得get的新潮搭配,吸睛感十足,时尚更有范