`

病毒扩散模型(Java)

    博客分类:
  • Java
阅读更多

病毒扩散模型

现代计算机蠕虫病毒传播途径多样化,除了利用移动介质如U盘等传播外,还可以 通过邮件、网页挂马、聊天工具、文件传输等多种方式传播,一些病毒甚至可以利用系统的某些漏洞自动进行传播。中毒的主机会自动搜索可以被感染的主机,并将 蠕虫病毒扩散开来。一台没有安装系统补丁、无安全防护软件的计算机连接到internet上,即使用户不做任何操作,只要网络是通的,在5分钟之内几乎必 定会感染上蠕虫病毒。下图是一个著名的病毒--红色代码在某天内传播感染计算机的情况。

CodeRed Spreads

红色代码病毒的传 播图

各种 各样的蠕虫病毒在Internet上进行传播,大量的主机被感染,新的病毒又在不断出现。这种现象与人类社会所面临的传染病流行的情形类似。它们都可以用 一个简单的数学模型来描述。

diff

式中N 是表示所有的可能被感染的群体数量,alpha 是已经被感染上病毒的个体所占的比 例,K 是一个常数,表示在一个时间段内某个病毒携带者(或感染病毒的计算机)能够传染其他的个体数 量。对于一个足够小的时间dt ,新增加的被感染个体数Nda 等于已经感染的数量Na 和可被感染的K(1-a) 的乘 积。这是一个微分公式。

 

我们往往关心的是被感染的主机比例\alpha 随着时间的增长变化的情况。对上面的 公式积分后得到如下的结果:

model

这个式子中的T 是一个积分常量,代表病毒的爆发期时刻。如下图的示例,传染能力(即在一段时 间内一台感染病毒的个体可以再感染的主机的多少)的度量值K=2.6。病毒的爆发期时间T=5.52。在5.52小时之前,病毒的传播速度还比较慢,接近 该时刻后,病毒感染了大量的主机,并且传播的速度也越来越快,最后几乎感染了所有的主机,再传播的速度也开始变慢了。前面红色代码病毒的传播图也表明了这 个特点。这个公式有一个著名的名称:罗杰斯特方程(logistic equation )。

spread

logistic equation

参考文献:

如何在你的空闲时间 占领整个互联网:How to 0wn the Internet in Your Spare Time

一些病毒传播的动画:http://www.caida.org/publications/animations/#security

=====

本题的目的要求你实现logistic方程,对不同的输入参数,计算某些特定时刻的函数值。

输入:

参数K和T,以及用起始时刻ts ,终止时刻te 和 增量dt表示的一个时间区间[ts ,te )。包含ts ,但不含te

输出:

对应各个时刻点的感染个体的比例,用空格进行分隔,每10个数据后换行。最后一行如果不够 10个数据也要换行。(补充:可能出现(t e -t s )/dt不是整 数的情形,要注意是否应该取最后那个点

输出数据请采用格式化字符串" %4.3f",即每个数据之前放置一个空格,数据保留小数点后三位有效数字。

 

样例输入:

2.6 5.52

0 8 0.1

样例输出:

0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

0.000 0.000 0.000 0.000 0.000 0.000 0.001 0.001 0.001 0.001

0.001 0.002 0.002 0.003 0.004 0.005 0.007 0.009 0.011 0.015

0.019 0.024 0.031 0.040 0.052 0.066 0.084 0.106 0.133 0.166

0.206 0.251 0.303 0.361 0.423 0.487 0.552 0.615 0.674 0.729

0.777 0.819 0.854 0.884 0.908 0.927 0.943 0.956 0.965 0.973

0.979 0.984 0.987 0.990 0.993 0.994 0.996 0.997 0.997 0.998

 

注意:(循环变量应使用整数类型)

 

 

import java.util.Scanner;

public class logistic {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		double K = scanner.nextDouble();
		double T = scanner.nextDouble();
		int t1 = scanner.nextInt();
		int t2 = scanner.nextInt();
		double dt = scanner.nextDouble();
		double a;
		int len = 0;
		for(int i=0;(t1+i*dt)<t2;i++){
			a = Math.exp(K*((t1+i*dt)-T))/(1+Math.exp(K*((t1+i*dt)-T)));
			System.out.printf(" %4.3f",a);
			len++;
			if(len==10){
				System.out.println();
				len = 0;
			}
		}
		if(len != 0){
			System.out.println();
		}
	}
}
 
分享到:
评论

相关推荐

    病毒传播模型实用.ppt

    蠕虫病毒可以通过分布式网络来扩散传播特定的信息或错误,进而造成网络服务遭到拒绝并发生死锁。 七、病毒进化道路 病毒的进化道路是指病毒从早期到现在的发展过程。病毒的发展过程包括早期病毒、宏病毒、网络病毒...

    昆虫杆状病毒流行病模拟模型及Java模拟软件(英文).pdf

    昆虫杆状病毒流行病模拟模型及Java模拟软件 本文档总结了昆虫杆状病毒流行病模拟模型的设计和开发,该模型旨在模拟昆虫杆状病毒的流行病过程,研究昆虫杆状病毒流行病的机理和关键因素,并为生物防治策略的制定提供...

    A java virus broadcast simulation.zip

    这个压缩包可能包含了一个示例程序,用于演示病毒如何在计算机网络中扩散,可能是为了教育或研究目的。 1. **Java病毒原理**: Java病毒并不是Java语言本身的特性,而是由于Java应用的交互性和可下载性导致的安全...

    新冠病毒病毒传染模拟.zip

    新冠病毒传染模拟是一个涉及编程语言(Java、Python和C/C++)和传染病模型的项目。这个模拟旨在通过编程来理解和预测城市内部病毒传播的行为。在这个压缩包文件中,可能包含了一个或多个程序,用于演示和分析病毒...

    Python 写了个新型冠状病毒疫情传播模拟程序

    病毒扩散仿真程序,用 python 也可以。 概述 事情是这样的,B 站 UP 主 @ele 实验室,写了一个简单的疫情传播仿真程序,告诉大家在家待着的重要性,视频相信大家都看过了,并且 UP 主也放出了源码。 因为是 Java ...

    VirusBroadcast-master.zip

    2. **src** - 源代码目录,里面可能有实现病毒模拟算法的编程语言文件(如Python、Java或C++),分为不同的模块来处理传播模型、感染逻辑、网络建模等。 3. **data** - 可能存储了模拟所需的初始数据,如网络拓扑...

    肺炎传染模拟_VirusBroadcast-master_源码

    这些模型描述了人口中个体在感染疾病过程中的状态转换,帮助我们理解疾病如何在人群中扩散。 2. **算法与数据结构**:源码可能会用到特定的数据结构,如图或网络,来表示个体之间的交互。同时,可能会使用特定算法...

    phylodynamics:BEAST2中的贝叶斯系统动力学方法

    在实际应用中,BEAST2广泛用于研究流感、艾滋病、新冠病毒等传染病的流行病学,以及探究物种的进化历史和地理扩散。通过结合基因组学数据,BEAST2可以帮助科学家绘制出病毒的传播路径,识别关键的进化事件,甚至预测...

    2021-2022计算机二级等级考试试题及答案No.11500.docx

    4. 计算机病毒:计算机病毒是一种能够自我复制和扩散的恶意程序,它的自我繁殖确实指的是复制自身到其他程序或系统中。 5. Java程序输出:根据题目描述,无法推断具体代码,但通常Java程序中main方法的输出与程序...

    2021-2022计算机二级等级考试试题及答案No.13194.docx

    7. 计算机病毒的自我繁殖特性指的是其复制能力,可以自我扩散并感染其他程序。 8. 算法的特性包括确定性、有穷性(算法必须在有限步骤后结束)、可行性(能在有限时间内执行)、有零个或多个输入以及有零个或一个...

    2021-2022计算机二级等级考试试题及答案No.13868.docx

    8. 病毒清除:删除带毒文件不一定能消除所有病毒,因为病毒可能已扩散到其他位置。 9. Math类方法:`Math.floor()`方法会返回小于参数的最大整数,-4.4经过此运算结果为-5.0。 10. 高级语言程序:用高级语言编写的...

    CA.rar_元胞自动机

    在实际应用中,元胞自动机可以用来模拟生态系统、交通流、病毒传播、物质扩散等多种复杂现象。因此,这个Java实现的元胞自动机程序是一个很好的起点,它可以帮助初学者建立起对复杂系统动态行为的直觉,并为进一步...

    2021-2022计算机二级等级考试试题及答案No.4496.docx

    9. **计算机病毒**:计算机病毒是一种自我复制并扩散的程序,复制是其自我繁殖的方式之一。 10. **宏管理**:宏组有利于数据库中宏对象的管理和组织。 11. **关系模型**:关系模型是数据库的一种表示方式,以二维...

    2021-2022计算机二级等级考试试题及答案No.16383.docx

    9. 计算机病毒:计算机病毒是一种能够自我复制和扩散的程序,通常会附着在其他合法程序上,对系统造成破坏。 10. 数据库设计关系模式:设计关系模式是数据库逻辑设计阶段的任务,关系模式描述了数据库的结构和数据...

    2021-2022计算机二级等级考试试题及答案No.18819.docx

    15. 计算机病毒:计算机病毒是一种能够自我复制并扩散的程序,它们可以自我繁殖。 16. 输入数据格式:掩码`#杯#-##挂###`对应的有效输入如`0755-123456`。 17. 表文件记录显示:`LIST NEXT 5`命令在当前记录号为10...

    delphsim:Delphos 流行病模拟器,PFC 2008

    【描述】"德尔菲辛" 是对 Delphos 流行病模拟器的简称,它是一个专门设计用来模拟各种传染病在不同环境下扩散情况的软件。PFC 2008模型是其核心,该模型考虑了个体之间的接触率和感染力,能够更准确地模拟真实世界中...

    2021-2022计算机二级等级考试试题及答案No.11700.docx

    5. 计算机病毒特征:计算机病毒具有隐蔽性、传染性、潜伏性、非法性、寄生性和破坏性,这些特性使它们能隐藏并扩散,对系统造成破坏。 6. Java编程:Java中,`protected String toString(){}`覆盖了父类的方法,...

    Cabir:Cabir是一种Android蠕虫,其行为类似于旧的可怕的Symbian蠕虫CABIR;)

    2. **操作系统适应性**:由于Android和Symbian是两个完全不同的操作系统,所以Android版的Cabir需要针对Android的API和安全模型进行定制,以实现其恶意行为。 3. **安全响应**:鉴于Symbian CABIR的历史,安全社区...

Global site tag (gtag.js) - Google Analytics