Python 是一種常用的編程語(yǔ)言,在數(shù)據(jù)科學(xué)領(lǐng)域廣受歡迎。今天我們將通過(guò) Python 模擬傳染病的傳播過(guò)程。
# 導(dǎo)入必要的庫(kù) import numpy as np import random import matplotlib.pyplot as plt # 設(shè)定參數(shù) num_people = 1000 # 總?cè)藬?shù) num_affected = 20 # 初始感染人數(shù) contact_rate = 0.2 # 接觸率 infectious_rate = 0.04 # 感染率 recovery_rate = 0.01 # 治愈率 num_days = 100 # 模擬天數(shù) # 生成人員位置,并隨機(jī)選擇一些人員感染 positions = np.random.uniform(size=(num_people, 2)) is_affected = np.zeros(num_people, dtype=bool) is_affected[:num_affected] = True np.random.shuffle(is_affected) # 開(kāi)始模擬傳播過(guò)程 for day in range(num_days): # 每個(gè)人隨機(jī)選取一定數(shù)量的朋友進(jìn)行接觸 for person_id, person_pos in enumerate(positions): if not is_affected[person_id]: continue for friend_id, friend_pos in enumerate(positions): if friend_id == person_id or random.random() >contact_rate: continue dist = np.linalg.norm(person_pos - friend_pos) if dist< infectious_rate: is_affected[friend_id] = True # 一定比例的感染者治愈 is_affected[np.random.choice(np.where(is_affected)[0], size=int(num_affected*recovery_rate), replace=False)] = False # 統(tǒng)計(jì)感染人數(shù)并畫(huà)圖 num_affected = np.sum(is_affected) plt.plot(day, num_affected, 'ro') # 添加標(biāo)簽 plt.title('Simulation of Infectious Disease') plt.xlabel('Days') plt.ylabel('Number of Affected People') # 展示模擬結(jié)果 plt.show()
這段代碼通過(guò)使用 numpy、random 和 matplotlib 庫(kù),模擬了傳染病的傳播過(guò)程。通過(guò)設(shè)定初始感染人數(shù)、接觸率、感染率、治愈率和模擬天數(shù),可以得到傳染病在人群中的傳播趨勢(shì),并用 matplotlib 包中的繪圖函數(shù)將其可視化。這種模擬可以幫助我們更好地理解傳染病的傳播和防控,對(duì)于疾病預(yù)防和控制有重要的意義。