编了一段选举簇头节点的算法,结果什么都不能显示。哪里出问题了?
代码如下:
#include
using namespace std;
#include
#include
struct node
{
float nnum; //节点值
int m; //标记,为1时表示节点当选过簇头
}node[100];
int main()
{
int n=100,p=0.05; //节点总数100个,期望的簇头数量与网络总节点比例为0.05
int r=1,j=1,i=1; //初始化当前轮数为第一轮,
float Tn; //定义阈值Tnint Fnode; //簇头节点序号
for(r=1;r<n*p;r++) //从第一轮开始
{
for(i=1;i<n;i++) //在每轮的开始,给100个节点赋0~1之间随机数值
{
#define N 999 //三位小数。
srand(time(NULL)); //设置随机数种子,使每次获取的随机序列不同。
node[i].nnum = rand()%(N+1)/(float)(N+1); //生成0-1间的随机数。
Tn=p/(1-p*(r % (1/p))); //计算每轮的阈值
if (node[i].nnum < Tn && node[i].m==0) //将未当选过簇头的节点与阈值比较,若小于阈值
Fnode=j; //将节点序号,赋值给簇头节点序号
node[i].m=1; //置m为1,表示此节点当选过节点
}
cout<<"期望值 p="<<p<<endl;
cout<<"当前轮数 r="<<r<<endl;
cout<<"当前阈值 Tn="<<Tn<<endl;
cout<<"当选簇首 Fnode="<<Fnode<<endl;
}
return 0;
}
struct node
{
float nnum; //节点值
int m; //标记,为1时表示节点当选过簇头
}node[100];
int main()
{
int n=100;
**float p=0.05;** //节点总数100个,期望的簇头数量与网络总节点比例为0.05
int r=1,j=1,i=1; //初始化当前轮数为第一轮,
float Tn = 0; //定义阈值Tn
int Fnode = 0; //簇头节点序号
for(r=1;r<n*p;r++) //从第一轮开始
{
for(i=1;i<n;i++) //在每轮的开始,给100个节点赋0~1之间随机数值
{
#define N 999 //三位小数。
srand(time(NULL)); //设置随机数种子,使每次获取的随机序列不同。
node[i].nnum = rand()%(N+1)/(float)(N+1); //生成0-1间的随机数。
Tn= p/(1-p * (r % (int)(1/p))); //计算每轮的阈值
if (node[i].nnum < Tn && node[i].m==0) //将未当选过簇头的节点与阈值比较,若小于阈值
Fnode=j; //将节点序号,赋值给簇头节点序号
node[i].m=1; //置m为1,表示此节点当选过节点
}
cout<<"期望值 p="<<p<<endl;
cout<<"当前轮数 r="<<r<<endl;
cout<<"当前阈值 Tn="<<Tn<<endl;
cout<<"当选簇首 Fnode="<<Fnode<<endl;
}
return 0;
}