这是一个 Python 病毒感染传播模型的示例代码:
import random
class Person:
def __init__(self, infected):
self.infected = infected
self.immune = False
self.dead = False
class Virus:
def __init__(self, mortality_rate, infection_rate):
self.mortality_rate = mortality_rate
self.infection_rate = infection_rate
def simulate(num_people, mortality_rate, infection_rate, initial_infected):
# 初始化人群
population = []
for i in range(num_people):
if i < initial_infected:
population.append(Person(True))
else:
population.append(Person(False))
# 初始化病毒
virus = Virus(mortality_rate, infection_rate)
# 模拟感染传播
while True:
# 感染者与健康者之间传播
for infected in population:
if infected.infected and not infected.dead:
for healthy in population:
if not healthy.infected and not healthy.immune and not healthy.dead:
if random.uniform(0, 1) < virus.infection_rate:
healthy.infected = True
# 死亡与康复
for infected in population:
if infected.infected and not infected.dead and not infected.immune:
if random.uniform(0, 1) < virus.mortality_rate:
infected.dead = True
else:
infected.immune = True
infected.infected = False
# 统计结果
infected_count = 0
immune_count = 0
dead_count = 0
for p in population:
if p.infected:
infected_count += 1
elif p.immune:
immune_count += 1
elif p.dead:
dead_count += 1
# 判断是否结束模拟
if infected_count == 0:
break
return infected_count, immune_count, dead_count
# 测试模拟函数
infected_count, immune_count, dead_count = simulate(1000, 0.1, 0.5, 10)
print(f'感染人数: {infected_count}, 康复人数: {immune_count}, 死亡人数: {dead_count}')
在这个模型中,有两个类: Person
和 Virus
。Person
类用于表示人,并记录每个人是否