#include #include #include #include #include using namespace std; class Linear; class LT; #include "lt.h" #include "linear.h" #include "graph.h" void randseed(); class Recv { LT *lt; Linear *li; int K; int maxN; int *p; int lin; int ltn; int *liprob; int *ltprob; public: double liexcess; double ltexcess; Rcvgraph *gr; public: Recv(int K_, int maxN_); ~Recv(); void newp(int q); void sample(); void rate(int T); }; main() { randseed(); int K=30; Recv rx(K,3*K); rx.gr=new Rcvgraph(K,3*K); rx.gr->setmode(3); const int n=7; //degree for(int t=t;t<3000;t++) { int a[n]; int b[n]; a[0]=0; a[1]=1+rand()%(K-n+1); for(int j=2;jkring_3dN(a,b,n); rx.rate(4000); printf("%4d,",t); for(int j=1;jgetmode()); f=fopen(s,"w"); fprintf(f,",LT %d,linear %d\r\n",gr->getmode(),gr->getmode()); for(int i=K;i<=maxN;i++) fprintf(f,"%3d, %f, %f\r\n",i, (double)ltprob[i]/T, (double)liprob[i]/T); fclose(f); } void Recv::sample() { lt->init(); li->init(); int ltr=0; int lir=0; lin=maxN+1; ltn=maxN+1; if(gr->getmode()==3) gr->init(); for(int i=0; irx(p); if(!(ltr==K)) { ltr=lt->recv(p); if(ltr==K) ltn=i+1; } if(!(lir==K)) { lir=li->recv(p); if(lir==K) lin=i+1; } } } void Recv::newp(int q) { if(q==0) { for(int i=0;i=0;i--) { j++; for(;p[j];j++) ; } p[j]=1; } } Recv::Recv(int K_, int maxN_) { K=K_; maxN=maxN_; lt=new LT(K,maxN); li=new Linear(K,maxN); lt->init(); li->init(); p=new int[K]; liprob=new int[maxN+1]; ltprob=new int[maxN+1]; } Recv::~Recv() { delete lt; delete li; delete[] p; delete[] liprob; delete[] ltprob; } void randseed() { int ti=time(0); printf("srand=%d\r\n",ti); srand(ti); }