Calculate Weird Things.
Twitter | Facebook | Email
Home | | Blog | Comments
Custom Search


COVID-19 Simulator

Starting Population (#)(i):
Starting Infected (#)(i):
Infection Rate (% as decimal)(i):
Frozen (% as decimal)(i):
Freeze on Symptoms (% as decimal)(i):
Mortality Rate (% as decimal)(i):
Death Time (frames)(i):
Death Variability (% as decimal)(i):
Recovery Time (frames)(i):
Recovery Time Variability (% dec.)(i):
Simulation:

Live Chart:

Status
Count
Percentage
Healthy
Infected
Symptomatic
Recovered
Dead
Status
Value
Max Symptomatic
Time Elapsed


Compare Graph

Notes:

This simulation is an ongoing project to help analyze the behavior of the SARS-CoV-2 coronavirus within a population. More functionality and features will be added as I continue to develop this page. If there's something the simulation doesn't do that you would like to see (and especially if it doesn't work, please email me at weirdmail@weirdcalculator.com to let me know. My to-do list for this page is listed below, along with an update log. There's a lot more that can be added, like intermittent social distancing, quarantine regions, and isolating high-risk individuals.
The size of the world is set to 780x400. Narrower screens will display a zoomed-out version, but the number of virtual pixels remains unchanged, so population density is unaffected.
Starting population is how many total people (dots) are in the world at the start. This is how we set the population density for the simulation. The world size is constant, so a higher population means higher density.
Starting infected is the number of people infected at the beginning of the simulation. In most cases, this can start at 1, but you may want to set it a bit higher if your infection rate or starting population is low. If this variable is higher than population, everyone starts out infected (boring).
Infection rate is the probability that an infected person will infect a healthy person when they come into contact. This has a chance to occur every time an infected person and a healthy person are within +/- one pixel of each other.
Frozen percentage is the portion of the population that's frozen in place from the start. This is meant to simulate social distancing as fewer people moving around means fewer opportunities for contact. A fortunate side effect is that people who start clustered together (within one pixel in each direction) are in constant contact, which closely approximates families and roommates who are much more likely to infect each other than strangers in a store.
Freeze on symptoms is the probability that a person will stop moving once they show symptoms. Note that unfrozen people will continue to move about while they're infected (and contagious) until they show symptoms, simulating the novel coronavirus's somewhat unusual tendency to shed and infect others while the host feels perfectly fine.
The mortality rate setting uses (pseudo-) randomness. With a large enough population or enough trials, it will converge with the observed mortality rate, but for small samples, the observed rate may vary quite a bit.
Death time is the mean time that it takes the virus (from infection) to kill a host, given that the virus will indeed kill the host. The death time of an individual person varies within +/- the percentage set by the death time variance slider. This follows a bounded binomial distribution. Depending on this setting, some people may die without becoming symptomatic, which is atypical of the actual disease.
Recovery time is the mean time that it takes a person to recover from infection, in the event that they do survive. This variation also follows a bounded binomial distribution. Depending on this setting, some people may recover without becoming symptomatic, as is the case with the actual virus.

Updates:

2020-04-05 - Initial release.
2020-04-07 - Updated graphing with a graph class to make things a little more sane for folks who care about things like accurate data representation. Fixed margins.
2020-04-11 - Mobile-friendly update for all calculators.
2020-04-16 - Notes added. Fixed starting infected bug. Randomization algorithm for death and recovery rates is now binomial instead of linear.

To-do:

Notes for each slider
Interactive graph
Parametric link generation (so you can share your configuration with your friends).
Additional parameters (possibly a version 2).
Result comparison to include statistics (not just raw graphs).