您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 基于NS2的随机数的产生实验报告
浙江科技学院网络仿真实验课程名称:随机数的产生专业班级:学号:姓名:指导教师:实验报告浙江科技学院目录一、关于随机数产生器....................................................................11.1种子(Seed)和分布(Distribution)................................11.2设置种子................................................................................11.3设置分布................................................................................1二、实验步骤....................................................................................32.1.测试随机数产生器:..............................................................32.2.一个在网络仿真中应用到随机数产生器的完整实例:......5(1)仿真的网络结构图............................................................5(2)效果评比指标:吞吐量(Throughput)......................5(3)TCL程序代码...................................................................5(4)分析awk程序代码...........................................................8(5)种子数量变化..................................................................10(6)变量分布时......................................................................11(7)FTP数据流数目变化......................................................14三、参考文献................................................................................16浙江科技学院1背景知识:随机数的使用在网络仿真实验的过程中非常重要,凡是网络节点在一个仿真中的位置,或者是应用程序在何时开始传送或结束数据传输,都会用到随机数产生器。因此,在本实验中,我们将学会如何使用NS2的随机数产生器及其应用。一、关于随机数产生器1.1种子(Seed)和分布(Distribution)随机数产生器所产生的数值是由种子和分布所控制的,不同的种子或者是分布就会产生不同的随机数。当一个种子和分布决定之后,随机数产生器会产生一出一个由一长串不同数字所组成的表格,当需要一个随机数时,随机数产生器就会去选取这个表格中的一个数字,当需要另一个随机数时,随机数产生器就会去选取这个表格中第二个数字,依此类推。所以当使用种子和分布相同时,得到的随机数就会相同;若不同时,得到的随机数就会不同。在NS2中,若种子的值是0,表示每次执行程序的时候,随机数产生器都会产生出不同的表格,也就是说每次的得到随机数都不相同。1.2设置种子若要在NS2中产生一个随机数产生器,并把种子设置为1,则可以把下的程序代码放入tclcode中。setrng[newRNG]$rngseed11.3设置分布(1)ParetoDistribution:要提供expectation(avg_)和shaperparameter(shape_)参数,实例如下:浙江科技学院2setr1[newRandomVariable/Pareto]$r1use-rng$rng$r1setavg_10.0$r1setshape_1.2(2)Constant:要提供平均值(avg_)参数,实例如下所示.setr2[newRandomVariable/Constant]$r2use-rng$rng$r2setavg_5.0(3)UniformDistribution:要提供最小值(min_)和最大值(max_)参数,实例如下所示:setr3[newRandomVariable/Uniform]$r3use-rng$rng$r3setmin_0.0$r3setmax_10.0(4)ExponentialDistribution:要提供平均值(avg_)参数,实例如下所示:setr4[newRandomVariable/Exponential]$r4use-rng$rng$r4setavg_5(5)HyperexponentialDistribution:要提供平均值(avg_)和cov_参数,实例如下所示:setr5[newRandomVariable/HyperExponential]$r5use-rng$rng$r5setavg_1.0$r5setcov_4.0浙江科技学院3二、实验步骤2.1.测试随机数产生器:setrng[newRNG]$rngseed1putsTestingParetoDistributionsetr1[newRandomVariable/Pareto]$r1use-rng$rng$r1setavg_10.0$r1setshape_1.2for{seti1}{$i=3}{incri}{puts[$r1value]}putsTestingConstantDistributionsetr2[newRandomVariable/Constant]$r2use-rng$rng$r2setavg_5.0for{seti1}{$i=3}{incri}{puts[$r2value]}putsTestingUniformDistributionsetr3[newRandomVariable/Uniform]$r3use-rng$rng$r3setmin_0.0$r3setmax_10.0for{seti1}{$i=3}{incri}{puts[$r3value]}putsTestingExponentialDistributionsetr4[newRandomVariable/Exponential]浙江科技学院4$r4use-rng$rng$r4setavg_5for{seti1}{$i=3}{incri}{puts[$r4value]}putsTestingHyperExponentialDistributionsetr5[newRandomVariable/HyperExponential]$r5use-rng$rng$r5setavg_1.0$r5setcov_4.0for{seti1}{$i=3}{incri}{puts[$r5value]}执行结果:浙江科技学院52.2.一个在网络仿真中应用到随机数产生器的完整实例:(1)仿真的网络结构图如图所示,r1和r2是两个路由器,其中的链路是采用FirstInFirstOut(FIFO)的队列管理机制,频宽是1Mbps,传递的延迟时间是10ms。来源节点s1、s2、s3和目的节点d1、d2、d3之间有三条FTP数据流,而这三条FTP数据流的起始时间是由随机数所产生的,但是时间都是0-1s,且每条数据流都会传送5s。(2)效果评比指标:吞吐量(Throughput)定义:单位时间内,所有目的结点的平均接收数据速率Throughput=(某段时间内所有目的结点的数据接收量)/(统计的这段时间)另外要补充一点的,在论文的实验中,在计算数据接收量并不是从模拟的起始时间就开始统计,而是让模拟经过一段时间,进入稳态才会开始统计。(3)TCL程序代码setns[newSimulator]#打开一个tracefile,用来记录封装包传送过程setnd[openout.trw]$nstrace-all$nd#打开一个NAM记录文件setnf[openout.namw]$nsnamtrace-all$nf#设置TCPflow的数目setnflow3#设置路由器setr1[$nsnode]setr2[$nsnode]$nsduplex-link$r1$r21Mb10msDropTail浙江科技学院6#设置queuelimit为10个packet$nsqueue-limit$r1$r210#设置TCP的来源节点和目的节点#建立来源和目的节点与路由器的链路for{seti1}{$i=$nflow}{incri}{sets($i)[$nsnode]setd($i)[$nsnode]$nsduplex-link$s($i)$r110Mb1msDropTail$nsduplex-link$r2$d($i)10Mb1msDropTail}#建立TCP的联机,并在TCP联机上建立FTP应用程序for{seti1}{$i=$nflow}{incri}{settcp($i)[newAgent/TCP]setsink($i)[newAgent/TCPSink]$nsattach-agent$s($i)$tcp($i)$nsattach-agent$d($i)$sink($i)$nsconnect$tcp($i)$sink($i)setftp($i)[newApplication/FTP]$ftp($i)attach-agent$tcp($i)$ftp($i)settype_FTP}setrng[newRNG]$rngseed1setRVstart[newRandomVariable/Uniform]$RVstartsetmin_0$RVstartsetmax_1$RVstartuse-rng$rng#由随机数产生器去决定每一条flow的起始时间(在0~1s之内)#每条flow传输5s,并在指定的时间,让ftp开始传输和结束for{seti1}{$i=$nflow}{incri}{setstartT($i)[expr[$RVstartvalue]]浙江科技学院7putsstartT($i)$startT($i)secsetendT($i)[expr($startT($i)+5)]putsendT($i)$endT($i)sec$nsat$startT($i)$ftp($i)start$nsat$endT($i)$ftp($i)stop}procfinish{}{globalnsndnfclose$ndclose$nf$nsflush-traceexecnamout.nam&exit0}#在第7秒时去调用finish函数来结束模拟$nsat7.0finish#执行模拟$nsrun浙江科技学院8(4)分析awk程序代码BEGIN{init=0;tartT=0;endT=0;}{action=$1;time=$2;from=$3;to=$4;type=$5;浙江科技学院9pktsize=$6;flow_id=$8;node_1_address=$9;node_2_address=$10;seq_no=$11;packet_id=$12;#记录类型是tcp动作是dequeue发生事件的时间介于1.0-5.0#由于新增结点时,结点建立的顺序为r1r2s1d1s2d2s3d3所以相对的#结点id就为01234567if(action==r&&type==tcp&&time=1.0&&time=5.0&&((from==1&&to==3)||(from==1&&to==5)||(fr
本文标题:基于NS2的随机数的产生实验报告
链接地址:https://www.777doc.com/doc-2469621 .html