COVID-19 Simulator
Simulation:
Live Chart:
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 sliderInteractive 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).