首頁>技術>

效果圖

動態圖

靜態圖

主要思路

首先建立一個二維陣列表示人群,內部元素全都是[1, 7]內的隨機整數,這每一個數表示一個人,數字越大表示抵抗力越強,數字越小表示抵抗力越弱。

建立完成後就開始隨機將人群中的幾個人轉為感染狀態,不管抵抗力強弱,隨機感染。

然後開始進入了“人群運動 + 病毒擴散”的無限迴圈。先人群運動,再病毒擴散。

人群運動:就是模擬人群裡每個人的社交活動,例如出門外出,拜訪朋友,旅遊購物等等……這個模擬的沒有那麼真實,原理上只是很簡單的隨機抽兩個人並讓它們交換位置,並執行n次。如果把已經被感染的人交換了出去,被感染的人進入到了一大片沒有感染的區域中,那麼這片區域很可能就要發生擴散式感染了。

病毒擴散:遍歷每一個人,如果當前這個人的抵抗力數小於某一範圍內被感染的人數,(這個範圍是:以當前這個人為圓心,一個元素間隔為單位長度,以r為半徑的圓內,包括圓上,排除他自己的人)則這個人就被感染,並在遍歷完所有人的時候修改所有人的感染狀態。

如圖:中間橘色的點表示被遍歷時所判定的人,感染判定半徑為2,則所有綠色的點和紅色的點都是能夠對此人造成影響的人,如果這些人中感染的人數過多了,人數超過了他的抵抗力系數,那麼他就被感染了,圖中有兩個人被感染,即如果此人的抵抗力系數小於2,那麼這個人就被感染了。

引數調整:

可以自定義陣列的長寬來設定人群的數量可以透過調整元素內部的隨機整數範圍來調整人均抵抗力分佈範圍可以透過調整感染半徑r來表示病毒的傳播能力,或者人與人之間採防護措施的程度。可以透過調整人群運動的執行次數n來表示人群活動能力。製作背景

大一上學期期末,想到一種模擬病毒傳播的模型,想到就開始動手做了。

7
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • leetcode907_go_子陣列的最小值之和