我也写了个疫情传播仿真程序

该博客介绍了一个用.NET编写的疫情传播仿真程序,通过调整各种参数,如居民移动意愿、戴口罩行为、医院床位数量等,模拟疫情的发展过程。结果显示,任何单一措施都无法完全控制疫情,综合防控才是关键。

用.NET写疫情传播仿真程序

前一阵子看到有人制作了《疫情传播仿真程序》,是用Java做的。里面根据多种实际情况,如居民移动意愿、医护能力、病毒传播能力,来模拟疫情的发展。看完之后,我暗暗称奇,特别是结合一些视频和照片,确实做得非常好。

既然有需要,2月6号那天晚上我决定说干就干,经过两个晚上的思考与编码,已经有了初步效果……运行效果如下:

这个效果可以这样解读,如果不加以任何控制,疫情会很快蔓延到整个城市,只有8:1000床位的城市,将很快失去控制,一年后运行效果如下(非常惨烈):

参数与使用

代码中实际有很多参数可以操作:

static double MoveWilling = 0.90f; // 移动意愿,0-1
static bool WearMask = false; // 是否戴口罩
static int HospitalBeds = 40; // 床位数

const float InffectRate = 0.8f; // 靠得够近时,被携带者感染的机率
const float SecondsPerDay = 0.3f; // 模拟器的秒数,对应真实一天
const float MovingDistancePerDay = 10.0f; // 每天移动距离
const int InitialInfectorCount = 5; // 最初感染者数
const double DeathRate = 0.021; // 死亡率

// 要靠多近,才会触发感染验证
static float SafeDistance() => WearMask ? 1.5f : 3.5f;

// 住院治愈时间,最短5天,最长12.75天,平均约7天
static float GenerateCureDays() => random.NextFloat(5, 12.75f);
// 潜伏期,1-14天
static float Generat
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值