Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
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;
}
Пример #4
0
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;
}
Пример #5
0
void bot_gauss_rand_init(uint32_t seed)
{
  zigset(seed);
  zigInit=1;
}