题目如下:
我们对疫情的感染过程进行以下数学建模:
- 将人简化为质点;
- 人在活动区域内随机行走,行走规则为:每个人只能向上、下、左、右四个方向行走,向四个方向行走的概率相等,行走速度V为1米/时间步,在活动区域边界处,向离开活动区域方向行走的概率降为0,向其他三个方向行走的概率不变;
- 感染半径R为2米;
- 未接种疫苗时,感染概率P(只要在感染半径内)为0.6;
- 感染时间T为10个时间步;
- 致死概率D(被感染者在感染时间内每个时间步都有可能致死)为0.001,致死后移除出活动区域;
- 非致死,即治愈,被治愈者不再被感染;
活动区域为200米*200米的正方形,被划分为1米*1米的网格点。初始化时,每个人随机出现在活动区域内的网格点上,并且所有人除致死外均不离开活动区域,随机选择一个人,其初始状态为被感染(即零号感染者)。
请模拟出上述传播过程。
题解:
首先,定义Person类:
class Person
{
public:
//公共参数
int activeRadius = 200; //活动区域
int V = 1; //行走速度
int R = 2; //感染半径
double P = 0.6; //感染概率
int T = 10; //感染时间
double D = 0.001; //致死概率
//个人参数
int positionX; //