python写一个病毒感染传播模型

在 Python 中,可以使用类似于下面这样的代码来模拟病毒感染传播:

import random

class Person:
  def __init__(self, is_infected):
    self.is_infected = is_infected
    self.is_vaccinated = False
    self.is_dead = False
  
  def infect(self):
    self.is_infected = True
  
  def vaccinate(self):
    self.is_vaccinated = True
  
  def kill(self):
    self.is_dead = True

class Virus:
  def __init__(self, mortality_rate):
    self.mortality_rate = mortality_rate
  
  def infect(self, person):
    if person.is_infected:
      return
    if random.random() < self.mortality_rate:
      person.kill()
    else:
      person.infect()

def simulate(num_people, vaccination_rate, mortality_rate):
  population = [Person(False) for _ in range(num_people)]
  virus = Virus(mortality_rate)

  for person in population:
    if random.random() < vaccination_rate:
      person.vaccinate()
  
  infected_count = len([p for p in population if p.is_infected])
  while infected_count > 0:
    for person in population:
      if person.is_infected:
        for other_person in population:
          if other_person is not person:
            virus.infect(other_person)
    infected_count = len([p for p in population if p.is_infected])

simulate(100, 0.8, 0.3)

这段代码定义了两个类:PersonVirusPerson 类用来模拟一个人,有三个属性:是否感染了病毒、是否接受了疫苗、是否死亡。Virus 类用来模拟病毒,有一个属性:致死率。

其中 simulate 函数用来模拟病毒感染传播的过程。它接受三个参数:总人数、接种疫苗的比率、致死率。在函数内部,首先初始化一个人群,然后给这个人群中的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值