程序员硬核操作 | 利用代码程序建立新冠病毒传播模型

本文深入解析了一位程序员利用Java和高斯分布建立的新冠病毒传播计算机仿真程序,该程序在B站上获得了高播放量。通过讲解高斯分布的概念、正态变量的标准化以及代码核心部分,阐述了模拟病毒传播的关键步骤。高斯分布在此模型中的应用,揭示了当前出门可能加剧疫情扩散的现实。
摘要由CSDN通过智能技术生成


憋疯了?在家宅不下去了?想出去透透气了?

千万别!

虽然你对疫情已经麻木了,觉得没什么大碍了。

但现实并非如此,抗疫战斗仍在继续,还没有达到钟南山等专家所说的爆发期。
如果大家现在要是出门,真的是在疫情防控添乱!

不信?一名程序员,连夜打造的计算机仿真程序,模拟新冠病毒传播,在B站上播放量已达到数百万:
在这里插入图片描述
视频链接:

https://www.bilibili.com/video/av86478875

它告诉我们:

如果现在出门逛,迎接我们的,就是疫情越来越难控制的局面。

本文对火爆B站的仿真程序进行了深度解读:

一、JFrame面板组件布局

在这里插入图片描述

二、数学概念:高斯(正态)分布

为什么要讲高斯分布?

病毒传播代码最精华部分,最精彩部分,最能体现仿真模拟的就是这个高斯分布的代码,在本章尽量也最简单的话语为大家简单的介绍一下高斯分布的理论。

2.1 高斯分布概念

一个非常常见的连续概率分布。正态分布在统计学上十分重要,经常用在自然和社会科学来代表一个不明的随机变量。

例如说人的体重、身高、某种疾病的患病年龄、城市人口的分布,基本都是符合高斯分布的统计学应用。高斯分布的公式为:
在这里插入图片描述
纵观整个高斯公式,有两个很重要的参数:μ(可以谐音为 “谬”),σ(发音为sigma);那么跟大家解释一下μ为平均值,σ为标准差。

标准差决定了整个样本数据的分布密度,标准差越小,数据越集中,如下图非常直观的描述的μ与σ的关系,以及σ对整个概率分布的影响。
在这里插入图片描述
另外,如果μ=0, σ=1的时候,就称之为标准高斯分布。而X轴落在整个⾼斯曲线内的值,专业的说法为服从高斯分布。

2.2 正态变量的标准化

正态变量的标准化是高斯公式的一个重要推导,这里直接给出结论:

v 为服从高斯分布的数据

σ 为标准差

μ 为平均值

W 对v进行标准化处理后的数据,依然是服从高斯分布的

正态变量的标准化公式:

W = (V - μ) / σ

那么V值的计算公式为:

V = W * σ + μ

2.3 高斯分布在Java中的应用

java.util.Random函数有个方法叫做nextGaussian()函数,定义如下:

/*

* @return the next pseudorandom, Gaussian ("normally") distributed

* {@code double} value with mean {@code 0.0} and

* standard deviation {@code 1.0} from this random number

* generator's sequence

*/

synchronized public double nextGaussian() {
   

// See Knuth, ACP, Section 3.4.1 Algorithm C. if (haveNextNextGaussian) {
   

haveNextNextGaussian = false; return nextNextGaussian;

} else {
   


double v1, v2, s;

do {
   

v1 = 2 * nextDouble() - 1; // between -1 and 1

v2 = 2 * nextDouble() - 1; // between -1 and 1 s = v1 * v1 + v2 * v2;

} while (s >= 1 || s == 0);

double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s); nextNextGaussian = v2 * multiplier;

haveNextNextGaussian = true;

return v1 * multiplier;

}

}

根据API的描述:返回一个double类型的值,这个值服从均值为0,均方差为1的标准正态分布。

然后根据正态变量的标准化推导公式:、

double value = sigma * new Random().nextGaussian() + 0.99;

三、核心代码解读

3.1启动类函数:

在这里插入图片描述

3.2画布相关代码

初始化画布:

在这里插入图片描述

如上图所示的MyPanel 类实现了Runnable接口:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值