/* gcc -o bs.x baksneppen.c -L/usr/X11R6/lib -lplot -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lm */ #include #include #include #include #include #include #include #include #include #define MAX 500 long int rng1(long int nrand); long int ia=16807; long int RMAX=2147483647; long int iq=127773; long int ir=2836; long int irandom; main(int argc, char *argv[]){ long int vmin,v[MAX]; char sbuff[7]; int N,i,j,n,nmin,m,pl_handle; long seed=1003; int ch=0; long int vmax=0; int time=0; int avatime=0; float x,y,dx; if(argc != 3){ printf("./bs.x seed N(<500)\n"); exit(0); } i=atoi(argv[1]); rng1(i); N=atoi(argv[2]); /* number of particles */ if(N >= 500){ printf("need N<500 \n"); exit(0); } /* randomly initialize the fitnesses*/ vmin=RMAX; for(n=0;nvmax){ vmax=vmin; avatime=0; } ++time; ++avatime; for(i=0;i<00000;i++); /* waiting loop */ pl_erase(); pl_fmove(-50.0,-58.0); pl_label("TIME= "); pl_fmove(-40.0,-58.0); pl_label(gcvt(time,6,sbuff)); pl_fmove(-20.0,-58.0); pl_label("AVA-TIME= "); pl_fmove(0.0,-58.0); pl_label(gcvt(avatime,6,sbuff)); pl_fmove(15.0,-58.0); pl_label("Thresh= "); pl_fmove(30.0,-58.0); y=vmax*4.6566128e-10; pl_label(gcvt(y,6,sbuff)); pl_filltype(0); pl_fbox(-51.0,-51.0,51.0,51.0); y=(vmax*4.6566128e-8)-52; pl_fline(-52,y,52,y); x=-51+dx; for(n=0;n0) irandom=nrand; l = irandom/iq; irandom = ia*(irandom-iq*l) - ir*l; if (irandom<0) irandom=irandom+RMAX; return(irandom); }