📄 generating-network.c
字号:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 1001
main()
{ FILE *fp1,*fp2,*fp3,*fp4,*fp5,*fp6;
int i,j,k,p,q,z,z1,l=0,m,n;
static int d[N],deg1[N],deg2[N];
float x,prob[N][N],sum,sum1;
static float genmatrix[N][N],deg[N],degcorr[N],clu[N],clu1[N];
fp1=fopen("prob-matrix.txt","r");
// fp2=fopen("avedia.txt","w");
fp3=fopen("1000avedeg10.txt","w");
fp4=fopen("1000avedegcorr10.txt","w");
fp5=fopen("1000aveclu10.txt","w");
// fp6=fopen("aveclucorr.txt","w");
for(i=1;i<N;i++)
{for(j=1;j<N;j++)fscanf(fp1,"%f",&prob[i][j]);}
L3:for(i=1;i<N;i++)for(j=1;j<N;j++)genmatrix[i][j]=0;
for(i=1;i<N;i++)
{for(j=i+1;j<N;j++)
{ x=(float)(rand())/RAND_MAX;
if(x<prob[i][j])genmatrix[i][j]=genmatrix[j][i]=1;
}
}
l++;
for(i=1;i<N;i++){deg1[i]=0;deg2[i]=0;clu1[i]=0;}
//calculate degree
for(i=1;i<N;i++)
{for(j=1;j<N;j++)
{deg[i]=deg[i]+genmatrix[i][j];deg1[i]=deg1[i]+genmatrix[i][j];
}
}
//calculate degree correlations
for(i=1;i<N;i++)
{sum=0;
for(j=1;j<N;j++)
{if(genmatrix[i][j]==1)sum=sum+deg1[j];
}
if(sum==0) continue;
else degcorr[i]=degcorr[i]+sum/deg1[i];
}
//calculate the clustering
for(i=1;i<N;i++)
{k=0; sum=0;
for(j=1;j<N;j++)
{if(genmatrix[i][j]==1){k++;deg2[k]=j;}
}
if(k==0||k==1)continue;
for(m=1;m<=k;m++)
{for(n=m+1;n<=k;n++)
{if(genmatrix[deg2[m]][deg2[n]]==1)sum++;
}
}
clu1[i]=2*sum/k/(k-1);
clu[i]=clu[i]+clu1[i];
}
printf("%d\n",l);
if(l!=5000)goto L3;
for(i=1;i<N;i++)
{ deg[i]=(float)deg[i]/l;degcorr[i]=degcorr[i]/l;
clu[i]=clu[i]/l;
fprintf(fp3,"%f\n",deg[i]);
fprintf(fp4,"%f\n",degcorr[i]);
fprintf(fp5,"%f\n",clu[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -