📄 blocking.cpp
字号:
/*******************************************************
* 阻塞率仿真作业 *
* *
* 李昆明 06041052 *
* *
* ( 输出的数据用MATLAB调用即可得出阻塞率曲线 ) *
* *
********************************************************/
#include <iostream>
#include <cmath>
#include <fstream>
const int Count_Usuer=1000; //定义用户个数
const int Count_Server=5; //定义每服务器的个数
/*******************************************************
* 服从指数分布的随机数产生函数 *
* *
********************************************************/
double Generate_Rand(double para)
{
double temp_u=0,Generate_Rand=0;
while((temp_u<=0)||(temp_u>1))
{
temp_u=rand()/33211.0;
}
Generate_Rand=-para*log(temp_u);
return Generate_Rand;
}
void main()
{
double Blocking_Probability[500],namda=1.0,u=0.4;
//定义存放阻塞率的数组,已经到达率和服务率
double finish_t[Count_Usuer]={0.0},arrival_t[Count_Usuer]={0.0},server[Count_Usuer],usuer[Count_Usuer],server1[Count_Server];
//定义存放结束时刻,达到时刻,服务时间,间隔时间的数组
int i,b,external,inner,NOB=0;
//external外循环次数inner内循环次数
for(external=0;external<500;external++)
{
NOB=0; //服务次数,每一次外循环,清零。
/*************产生服从指数分布的随机数*******************/
for(i=0;i<Count_Usuer;i++)
{
usuer[i]=Generate_Rand(1/namda);//产生时间间隔
server[i]=Generate_Rand(u); //产生服务时间
}
/*******************建立时间轴****************************/
for(i=0;i<Count_Usuer;i++)
{
arrival_t[i+1]=arrival_t[i]+usuer[i+1]; //用户的到达时刻
finish_t[i]=arrival_t[i]+server[i]; //用户的结束时刻
}
for(i=0;i<5;i++)
{
server1[i]=finish_t[i];
}
/*******************计算1000个用户的阻塞率*****************/
for(inner=Count_Server;inner<Count_Usuer;inner++)
{
for(b=0;b<Count_Server;b++)
{
if(arrival_t[inner]>server1[b]) //达到时刻与结束时刻相比较,如果大于则进入服务器,未被阻塞
{
NOB++; //统计1000个用户中的未被阻塞次数
server1[b]=finish_t[inner];
break;
}
}
}
NOB=Count_Usuer-NOB; //计算出阻塞次数
Blocking_Probability[external]=(double)NOB/Count_Usuer; //计算阻塞率
std::cout<<Blocking_Probability[external]<<" ";
namda++; //改变达到率
}
/**************************数据的输出***********************/
std::ofstream out_file("d.txt",std::ios::trunc);//文件的输出:d.txt
if(out_file.fail())
return;
for( i=0;i<500;i++)
{
if(i==0)
out_file<<Blocking_Probability[0];
out_file<<" "<<Blocking_Probability[i];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -