예제 #1
0
파일: colors.cpp 프로젝트: bmorgan5/LedVest
static void add_sparkles() {
	for(uint8_t i = 0; i < 30; i++){
		uint16_t index = XY(random16(WIDTH), random16(HEIGHT));

		if(leds[index] == CRGB(0,0,0)) {
			leds[index] = CRGB::White;
		}
	}
}
예제 #2
0
/* Поиск неиспользуемого короткого panid на канале. 
 * В случае неудачи возвращается 0xFFFF */
static s_panid_t   znet_unused_spanid(uint8_t   channel)
{
    neighbor_t  *nbr_ptr;
    s_panid_t   panid;
    uint16_t    attempt;

    /* Алгоритм нахождения псевдослучайного короткого идентификатора сети (panid) следующий:
     *  1. Псевдослучайным образом выбираем panid и проверяем по таблице соседей, есть ли узлы
     *  с таким panid на заданном канале. 
     *  2. Если такой узел обнаружен, то повторяем  первый шаг. Итак для выбора panid эту процедуру
     *  нужно повторить максимум число раз, равное размеру таблицы соседей + 1.  */
    panid = random16() % 0x3FFF, attempt = 0, nbr_ptr = nbr_next(0);
    while( IN_TABLE(nbr_ptr) ) {
        if( (nbr_ptr->channel == channel)&&(nbr_ptr->s_panid == panid ) ) {
            if( attempt++ < (Z_NEIGHBOR_TABLE_SIZE+1) ) {
                panid = (panid + 1) % 0x3FFF;
                nbr_ptr = nbr_next(0);
                continue;
            }
            return 0xFFFF;
        }
        nbr_ptr = nbr_next( nbr_ptr );
    }
    return panid;
}
예제 #3
0
void Flicker::update() {
  if (random16(20000) < threshold) {
    FastLED.showColor(CHSV(0, 0, random(0xFF)));
  } else {
    FastLED.showColor(CRGB::Black);
  }
};
예제 #4
0
int main(int argc, char **argv) {
	int i,x;
	int errors=0;

	memset(results,0,65536*sizeof(int));

	for(i=0;i<65536*2;i++) {
		cycles=0;
		x=random16();
		results[x]++;
		if (cycles!=42) {
			fprintf(stderr,"Error!  Cycles=%d Path=%x\n",
				cycles,path);
			errors++;
		}
	}

	for(i=0;i<65536;i++) {
		if (results[i]!=2) printf("%d: %d\n",i,results[i]);
	}

	printf("Errors: %d\n",errors);

	return 0;
}
예제 #5
0
// This function returns a uniformly distributed integer in the range of 
// of [0,max).  The added complexity of this function is required to ensure
// a uniform distribution since the naive modulus max (% max) introduces
// bias for all values of max that are not powers of two.
//
// The loops below are needed, because there is a small and non-uniform chance
// That the division below will yield an answer = max, so we just get
// the next random value until answer < max.  Which prevents the introduction
// of bias caused by the division process.  This is why we can't use the 
// simpler modulus operation which introduces significant bias for divisors
// that aren't a power of two
uint32_t EntropyClass::random(uint32_t max)
{
  uint32_t slice;

  if (max < 2)
    retVal=0;
  else
    {
      retVal = WDT_MAX_32INT;
      if (max <= WDT_MAX_8INT) // If only byte values are needed, make best use of entropy
	{                      // by diving the long into four bytes and using individually
	  slice = WDT_MAX_8INT / max;
	  while (retVal >= max)
	    retVal = random8() / slice;
	} 
      else if (max <= WDT_MAX_16INT) // If only word values are need, make best use of entropy
	{                            // by diving the long into two words and using individually
	  slice = WDT_MAX_16INT / max;
	  while (retVal >= max)
	    retVal = random16() / slice;
	} 
      else 
	{
	  slice = WDT_MAX_32INT / max;
	  while (retVal >= max)           
	    retVal = random() / slice;
	}                                 
    }
  return(retVal);
}
예제 #6
0
파일: signB_3d.cpp 프로젝트: TomShea/signB
void setup() {
  delay(1000);

  FastLED.addLeds<CHIPSET, PIN_WING_LEFT,   COLOR_ORDER>(leds[INDEX_WING_LEFT],  N_LEDS_WING_LEFT);
  FastLED.addLeds<CHIPSET, PIN_HEAD,        COLOR_ORDER>(leds[INDEX_HEAD],       N_LEDS_HEAD);
  FastLED.addLeds<CHIPSET, PIN_WING_RIGHT,  COLOR_ORDER>(leds[INDEX_WING_RIGHT], N_LEDS_WING_RIGHT);
  FastLED.addLeds<CHIPSET, PIN_BODY_UPPER,  COLOR_ORDER>(leds[INDEX_BODY_UPPER], N_LEDS_BODY_UPPER);
  FastLED.addLeds<CHIPSET, PIN_BODY_LOWER,  COLOR_ORDER>(leds[INDEX_BODY_LOWER], N_LEDS_BODY_LOWER);
  FastLED.addLeds<CHIPSET, PIN_TAIL,        COLOR_ORDER>(leds[INDEX_TAIL],       N_LEDS_TAIL);

  FastLED.setBrightness(BRIGHTNESS);

  // Initialize our coordinates to some random values
  x = random16();
  y = random16();
  z = random16();
}
예제 #7
0
OutgoingDataQueue::OutgoingDataQueue() :
OutgoingDataQueueBase(),
#ifdef  CCXX_IPV6
DestinationListHandlerIPV6(),
#endif
DestinationListHandler(), sendLock(), sendFirst(NULL), sendLast(NULL)
{
    setInitialTimestamp(random32());
    setSchedulingTimeout(getDefaultSchedulingTimeout());
    setExpireTimeout(getDefaultExpireTimeout());

    sendInfo.packetCount = 0;
    sendInfo.octetCount = 0;
    sendInfo.sendSeq = random16();    // random initial sequence number
    sendInfo.sendCC = 0;    // initially, 0 CSRC identifiers follow the fixed heade
    sendInfo.paddinglen = 0;          // do not add padding bits.
    sendInfo.marked = false;
    sendInfo.complete = true;
    // the local source is the first contributing source
    sendInfo.sendSources[0] = getLocalSSRC();
    // this will be an accumulator for the successive cycles of timestamp
    sendInfo.overflowTime.tv_sec = getInitialTime().tv_sec;
    sendInfo.overflowTime.tv_usec = getInitialTime().tv_usec;
}
예제 #8
0
main()
{
  int loop;
  int i;

  gaudry_init();

  for (loop = 0;loop < 100;++loop) {
    random16(k);
    printf("tk="); print16(k); printf(";\n");
    gaudry_todouble(x,k);
    printf("tx="); printdouble(x); printf(";\n");
    printf("(tx-tk)%(2^127-1)\n");

    randomdouble(x);
    randomdouble(y);
    printf("tx="); printdouble(x); printf(";\n");
    printf("ty="); printdouble(y); printf(";\n");
    gaudry_mult(z,x,y);
    printf("tz="); printdouble(z); printf(";\n");
    printf("(tx*ty-tz)%(2^127-1)\n");

    randomdouble(x);
    printf("tx="); printdouble(x); printf(";\n");
    gaudry_recip(z,x);
    printf("tz="); printdouble(z); printf(";\n");
    printf("(tx*tz-1)%(2^127-1)\n");
    gaudry_fromdouble(k,z);
    printf("tk="); print16(k); printf(";\n");
    printf("(tz-tk)%(2^127-1)\n");

    randomdouble(x); printf("x0="); printdouble(x); printf(";\n");
    randomdouble(x + 5); printf("x1="); printdouble(x + 5); printf(";\n");
    randomdouble(x + 10); printf("x2="); printdouble(x + 10); printf(";\n");
    randomdouble(x + 15); printf("x3="); printdouble(x + 15); printf(";\n");
    gaudry_hadamard(z,x);
    printf("z0="); printdouble(z); printf(";\n");
    printf("z1="); printdouble(z + 5); printf(";\n");
    printf("z2="); printdouble(z + 10); printf(";\n");
    printf("z3="); printdouble(z + 15); printf(";\n");
    printf("(x0+x1+x2+x3)-z0\n");
    printf("(x0+x1-x2-x3)-z1\n");
    printf("(x0-x1+x2-x3)-z2\n");
    printf("(x0-x1-x2+x3)-z3\n");
  }

  gaudry_surface_specify(a,b,c,d);
  printf("p=2^127-1;\n");
  printf("a=Mod("); print16(a); printf(",p);\n");
  printf("b=Mod("); print16(b); printf(",p);\n");
  printf("c=Mod("); print16(c); printf(",p);\n");
  printf("d=Mod("); print16(d); printf(",p);\n");
  printf("qx1=Mod("); print16(x1str); printf(",p);\n");
  printf("qy1=Mod("); print16(y1str); printf(",p);\n");
  printf("qz1=Mod("); print16(z1str); printf(",p);\n");
  printf("qt1=Mod("); print16(t1str); printf(",p);\n");
  printf("R1=[qx1,qy1,qz1,qt1];\n");
  printf("H(Q)=Q*[1,1,1,1;1,1,-1,-1;1,-1,1,-1;1,-1,-1,1]\n");
  printf("AA = H([a*a,b*b,c*c,d*d])[1]/4;\n");
  printf("BB = H([a*a,b*b,c*c,d*d])[2]/4;\n");
  printf("CC = H([a*a,b*b,c*c,d*d])[3]/4;\n");
  printf("DD = H([a*a,b*b,c*c,d*d])[4]/4;\n");
  printf("e = 256 * a*b*c*d *AA*BB*CC*DD / ((a*a*d*d-b*b*c*c)*(a*a*c*c-b*b*d*d)*(a*a*b*b-c*c*d*d));\n");
  printf("f = (a*a*a*a - b*b*b*b - c*c*c*c + d*d*d*d) / (a*a*d*d - b*b*c*c);\n");
  printf("g = (a*a*a*a - b*b*b*b + c*c*c*c - d*d*d*d) / (a*a*c*c - b*b*d*d);\n");
  printf("h = (a*a*a*a + b*b*b*b - c*c*c*c - d*d*d*d) / (a*a*b*b - c*c*d*d);\n");
  printf("C = x^4+y^4+z^4+t^4 + 2*e*x*y*z*t - f*(x^2*t^2+y^2*z^2) - g*(x^2*z^2+y^2*t^2) - h*(x^2*y^2+z^2*t^2);\n");
  printf("square(Q)=[Q[1]^2,Q[2]^2,Q[3]^2,Q[4]^2]\n");
  printf("ABC(Q)=[Q[1],Q[2]*AA/BB,Q[3]*AA/CC,Q[4]*AA/DD]\n");
  printf("mult(P,Q)=[P[1]*Q[1],P[2]*Q[2],P[3]*Q[3],P[4]*Q[4]]\n");
  printf("abc(Q)=[Q[1],Q[2]*a/b,Q[3]*a/c,Q[4]*a/d]\n");
  printf("double(Q)=abc(H(ABC(square(H(square(Q))))))\n");
  printf("divide(P,Q)=[P[1]/Q[1],P[2]/Q[2],P[3]/Q[3],P[4]/Q[4]]\n");
  printf("dividescaled(Q,Q1)=[Q[1],Q[2]*Q1[1]/Q1[2],Q[3]*Q1[1]/Q1[3],Q[4]*Q1[1]/Q1[4]]\n");
  printf("add(Q2,Q3,Q1)=dividescaled(H(ABC(mult(H(square(Q2)),H(square(Q3))))),Q1)\n");
  printf("onsurface(Q)=subst(subst(subst(subst(C,x,Q[1]),y,Q[2]),z,Q[3]),t,Q[4])\n");
  printf("doubleadd(Z,Q1)=[double(Z[1]),add(Z[1],Z[2],Q1)]\n");
  printf("flip(Z,bit)=[Z[2]*bit+Z[1]*(1-bit),Z[1]*bit+Z[2]*(1-bit)]\n");
  printf("doubleaddflip(Z,Q1,bit)=flip(doubleadd(flip(Z,bit),Q1),bit)\n");
  printf("ladder(Q1,n)=if(n==0,[[a,b,c,d],Q1],doubleaddflip(ladder(Q1,floor(n/2)),Q1,n%2))\n");
  printf("scalarmult(Q1,n)=ladder(Q1,n)[1]\n");

  gaudry_todouble(q1 + 0,x1str);
  gaudry_todouble(q1 + 5,y1str);
  gaudry_todouble(q1 + 10,z1str);
  gaudry_todouble(q1 + 15,t1str);

  printf("Q1="); printpoint(q1); printf(";\n");
  printf("lift(onsurface(Q1))\n");
  printf("lift((Q1-R1)[1])\n");
  printf("lift((Q1-R1)[2])\n");
  printf("lift((Q1-R1)[3])\n");
  printf("lift((Q1-R1)[4])\n");

  for (loop = 0;loop < 1000;++loop) {
    for (i = 0;i < 32;++i) alicesecret[i] = random();
    printf("AK="); print32(alicesecret); printf(";\n");
    gaudry(alicepublic,alicesecret,basepoint);
    printf("AP="); printkey(alicepublic); printf(";\n");
    printf("T=scalarmult(Q1,AK);\n");
    printf("lift(T[1]/T[2]-AP[1])\n");
    printf("lift(T[1]/T[3]-AP[2])\n");
    printf("lift(T[1]/T[4]-AP[3])\n");

    for (i = 0;i < 32;++i) bobsecret[i] = random();
    printf("BK="); print32(bobsecret); printf(";\n");
    gaudry(bobpublic,bobsecret,basepoint);
    printf("BP="); printkey(bobpublic); printf(";\n");
    printf("T=scalarmult(Q1,BK);\n");
    printf("lift(T[1]/T[2]-BP[1])\n");
    printf("lift(T[1]/T[3]-BP[2])\n");
    printf("lift(T[1]/T[4]-BP[3])\n");
  
    gaudry(aliceshared,alicesecret,bobpublic);
    gaudry(bobshared,bobsecret,alicepublic);
    printf("AS="); printkey(aliceshared); printf(";\n");
    printf("BS="); printkey(bobshared); printf(";\n");
    printf("lift(AS[1]-BS[1])\n");
    printf("lift(AS[2]-BS[2])\n");
    printf("lift(AS[3]-BS[3])\n");
    printf("T=scalarmult(Q1,AK*BK);\n");
    printf("lift(T[1]/T[2]-AS[1])\n");
    printf("lift(T[1]/T[3]-AS[2])\n");
    printf("lift(T[1]/T[4]-AS[3])\n");
  }

  return 0;
}
예제 #9
0
void WavePixels::randomize(uint8_t ci){
  this -> randomizeColor(ci);
  cycleTime[ci] = random16(200,10000);
  hueA[ci] = random16(INT16_MAX);
}