int main() { RngData rd; float rn; long long int i; float fseries[CONTAINER_LENGTH]; float startseries[CONTAINER_LENGTH]; rngDataInit (&rd); zigset(&rd, DUMMY); rd.seed = 1; while (i < SERIES_LENGTH) { startseries[i%SERIES_LENGTH]=_randomNormal ((&rd)); printf ("startseries[%lld] = %f\n", i%SERIES_LENGTH, startseries[i%SERIES_LENGTH]); i++; } while (i < LLONG_MAX) { rn = _randomNormal ((&rd)); fseries[i%SERIES_LENGTH]=rn; if (!compareSeries (startseries, fseries)) { printf ("Cycle ended at %lld\n", i-SERIES_LENGTH); break; } i++; } return i; }
Agent::Agent(int numb,int avgAge,int dropS, Strategy * s1, Strategy * s2, Strategy * s3){ strats =new Strategy * [3]; strats[0]=new Strategy(s1); strats[1]=new Strategy(s2); strats[2]=new Strategy(s3); numbars=numb; age=0; zigset(time(NULL)); float a=RNOR; a=a*5; a=a+avgAge; if(avgAge<0) { death=-1; } else { death=(int) a; } drop=dropS; bar=0; }
/* Precondition: 0 <= numb <= 256 Postcondition: An Agents Strategies has been initialized and Description: Initializes an Agents Strategy */ Agent::Agent(int numb,int avgAge,int dropS){ strats =new Strategy*[3]; strats[0]=new Strategy(numb); strats[1]=new Strategy(numb); strats[2]=new Strategy(numb); numbars=numb; age=0; zigset(time(NULL)); float a=RNOR; a=a*10; a=a+avgAge; if(avgAge<0) { death=-1; } else { death=(int) a; } bar=0; drop=dropS; }
Index build(char *dbname,int n,int *argc,char ***argv) { FURTHEST_INDEX *rval; int i,j,k; float x; /* allocate memory and set up data structure */ rval=(FURTHEST_INDEX *)malloc(sizeof(FURTHEST_INDEX)); rval->magic=MAGIC; rval->num_dimensions=DB.coords; rval->num_points=n; if (*argc<1) { fprintf(stderr,"usage: <standard params> <l> [algorithm]\n"); exit(1); } rval->num_projections=atoi((*argv)[0]); if (rval->num_projections<1) { fprintf(stderr,"bad number of projections %d\n",rval->num_projections); } if (*argc>1) { if (strcmp((*argv)[1],"by_rank")==0) rval->algorithm=1; else if (strcmp((*argv)[1],"query")==0) rval->algorithm=2; else { fprintf(stderr,"unknown command-line parameter"); exit(1); } } else rval->algorithm=0; rval->dbname=(char *)malloc(strlen(dbname)+1); strcpy(rval->dbname,dbname); rval->pdp=(PDIST_PAIR *)malloc(sizeof(PDIST_PAIR)*(rval->num_projections+1) *rval->num_points); printf("Generating index for %d points, %d dimensions, " "%d projections, %s.\n", rval->num_points,rval->num_dimensions,rval->num_projections, algoname[rval->algorithm]); /* generate random projection directions */ /* TODO allow adjustable seed */ zigset(MAGIC+time(NULL)+170*getpid()); rval->projections=(float *)malloc(sizeof(float)*rval->num_projections *rval->num_dimensions); for (i=0;i<rval->num_projections*rval->num_dimensions;i++) rval->projections[i]=RNOR/sqrt((float)rval->num_dimensions); /* project all the points */ for (i=0;i<rval->num_projections;i++) for (j=0;j<rval->num_points;j++) { x=0.0; for (k=0;k<rval->num_dimensions;k++) x+=(rval->projections[i*rval->num_dimensions+k]*(db(j+1)[k])); rval->pdp[(i+1)*rval->num_points+j].obj=j+1; rval->pdp[(i+1)*rval->num_points+j].u.pdist=x; } /* compute master ranks */ if (rval->algorithm==1) { /* based on ranks and times achieved */ /* sort within each projection */ for (i=1;i<=rval->num_projections;i++) qsort(rval->pdp+i*rval->num_points,rval->num_points, sizeof(PDIST_PAIR),pdist_compar); /* assign rank numbers */ for (i=1;i<=rval->num_projections;i++) for (j=0;j<rval->num_points;j++) rval->pdp[i*rval->num_points+j].u.rta.rank=j; /* find most extreme rank number for each point */ for (j=0;j<rval->num_points;j++) { rval->pdp[j].obj=j+1; rval->pdp[j].u.rta.rank=rval->num_points; rval->pdp[j].u.rta.times_achieved=0; } for (i=1;i<=rval->num_projections;i++) for (j=0;j<rval->num_points;j++) { if (rval->pdp[i*rval->num_points+j].u.rta.rank< rval->pdp[rval->pdp[i*rval->num_points+j].obj-1].u.rta.rank) { rval->pdp[rval->pdp[i*rval->num_points+j].obj-1].u.rta.rank= rval->pdp[i*rval->num_points+j].u.rta.rank; rval->pdp[rval->pdp[i*rval->num_points+j].obj-1].u.rta.times_achieved=1; } else if (rval->pdp[i*rval->num_points+j].u.rta.rank== rval->pdp[rval->pdp[i*rval->num_points+j].obj-1].u.rta.rank) rval->pdp[rval->pdp[i*rval->num_points+j].obj-1].u.rta.times_achieved++; } /* sort on those */ qsort(rval->pdp,rval->num_points,sizeof(PDIST_PAIR),rta_compar); } else { /* based on projected value */ /* sort within each projection (extra) */ for (i=1;i<=rval->num_projections;i++) { qsort(rval->pdp+i*rval->num_points,rval->num_points, sizeof(PDIST_PAIR),pdist_compar); } /* find most extreme projected value for each point */ for (j=0;j<rval->num_points;j++) { rval->pdp[j].obj=j+1; rval->pdp[j].u.pdist=1.0e38; } for (i=1;i<=rval->num_projections;i++) for (j=0;j<rval->num_points;j++) if (rval->pdp[i*rval->num_points+j].u.pdist< rval->pdp[rval->pdp[i*rval->num_points+j].obj-1].u.pdist) { rval->pdp[rval->pdp[i*rval->num_points+j].obj-1].u.pdist= rval->pdp[i*rval->num_points+j].u.pdist; } /* sort on those */ qsort(rval->pdp,rval->num_points,sizeof(PDIST_PAIR),pdist_compar); } return rval; }
void bot_gauss_rand_init(uint32_t seed) { zigset(seed); zigInit=1; }