introspec wrote:Вариант 3: Длина последовательности 224-1, вырожденный полином, время работы 90 тактов (для битов) или 90+11=101 такт (для байтов).
introspec wrote:Вариант 4: Длина последовательности 224-1, полином получше, время работы 106 тактов (для битов) или 106+11=117 тактов (для байтов).
#include <string.h>
u8 seed[4];
void rnd_init(u32 s)
{
*(u32*)seed = s;
}
u8 rnd()
{
u8 c;
c = seed[0] + seed[1] + seed[2] + seed[3];
c = (c << 1) | ((c >> 7) & 1);
seed[0] = seed[1];
seed[1] = seed[2];
seed[2] = seed[3];
seed[3] = c;
return c;
}
void test(u32 s)
{
u8 t1[sizeof(seed)];
u32 cyc = 0;
rnd_init(s);
for (int i = 0; i < sizeof(seed); i++)
t1[i] = rnd();
while (1)
{
rnd();
cyc++;
if (!memcmp(t1, seed, sizeof(seed))) break;
}
printf("Seed: %d, Cycles: %d\n", s, cyc);
}
int main()
{
int a = 1;
while (1)
test(a++);
}
Users browsing this forum: No registered users and 0 guests