Ejemplo n.º 1
0
 public void Generate() {
   RG.Init();
   Rep0 = 1;
   while (Pos < BufferSize) {
     if (GetRndBit() == 0 || Pos < 1) Buffer[Pos++] = (byte) (RG.GetRnd(8));
     else {
       int len;
       if (RG.GetRnd(3) == 0) len = 1 + GetLen1();
       else {
         do Rep0 = GetOffset();
         while (Rep0 >= Pos);
         Rep0++;
         len = 2 + GetLen2();
       }
       for (int i = 0; i < len && Pos < BufferSize; i++, Pos++) Buffer[Pos] = Buffer[Pos - Rep0];
     }
   }
 }
Ejemplo n.º 2
0
 int GetLen2() {
   return RG.GetRnd(2 + (int) RG.GetRnd(2));
 }
Ejemplo n.º 3
0
 int GetLen1() {
   return RG.GetRnd(1 + (int) RG.GetRnd(2));
 }
Ejemplo n.º 4
0
 int GetOffset() {
   if (GetRndBit() == 0) return GetLogRandBits(4);
   return (GetLogRandBits(4) << 10) | RG.GetRnd(10);
 }
Ejemplo n.º 5
0
 int GetLogRandBits(int numBits) {
   int len = RG.GetRnd(numBits);
   return RG.GetRnd((int) len);
 }
Ejemplo n.º 6
0
 int GetRndBit() {
   return RG.GetRnd(1);
 }