病毒扩散仿真程序,用 python 也可以。
概述
事情是这样的,B 站 UP 主 @ele 实验室,写了一个简单的疫情传播仿真程序,告诉大家在家待着的重要性,视频相信大家都看过了,并且 UP 主也放出了源码。
因为是 Java 开发的,所以开始我并没有多加关注。后来看到有人解析代码,发现我也能看懂,然后就琢磨用 Python 应该怎么实现。

Java 版程序浅析
一个人就是 1 个(x, y)坐标点,并且每个人有一个状态。
public class Person extends Point { private int state = State.NORMAL;}
在每一轮的迭代中,遍历每个人,每个人根据自身的状态,做出一定的动作,包括:
- 移动
- 状态变化
- 影响他人
这些动作的具体变更,取决于定义的各种系数。
一轮迭代完成,打印这些点,不同的状态对应不同的颜色。
绘图部分直接使用的 Java 绘图类 Graphics。
Python 版思路
如果我们想用 Python 实现应该怎么做呢?
如果完全复刻 Java 版本,则每次迭代需遍历所有人,并计算和他人距离,这就是 N^2 次计算。如果是 1000 个人,就需要循环 1 百万次。这个 Python 的性能肯定捉急。
不过 Python 有 numpy ,可以快速的操作数组。结合 matplotlib 则可以画出图形。
import numpy as npimport matplotlib.pyplot as plt</

本文介绍了作者尝试使用Python重现实验室的疫情传播仿真程序,通过numpy和matplotlib进行人群模拟,包括状态变化、影响他人、移动及结果输出,强调了性能优化和图形化显示的重要性。
最低0.47元/天 解锁文章
670

被折叠的 条评论
为什么被折叠?



