Конечно, не соответствует. Именно это я и пытался Вам так долго сказать.
Давайте сделаем следующий шаг:
Код:
srand(1);
printf("%d %d\n", rand(), rand());
srand(1);
int x = rnd(1);
int y = rnd(x);
printf("%d %d\n", x, y);
Почему результаты разные?
Кстати, обратите внимание: я
не использую brent(). Разделяй и властвуй — это один из основных приёмов в анализе программ. В данном случае, нам исключительно важно убедиться, что у нас правильная функция f()
до того, как мы начали тестировать brent().
Добавлено спустя 6 минут 44 секунды:В идеальном случае, мы должны иметь что-то такое:
Код:
srand(1);
printf("%d %d %d\n", rand(), rand(), rand());
srand(1);
int x1 = f(x0);
int x2 = f(x1);
int x3 = f(x2);
// результаты должны совпасть
printf("%d %d %d\n", x1, x2, x3);
int y1 = f(x0);
int y2 = f(y1);
int y3 = f(y2);
// результаты должны совпасть
printf("%d %d %d\n", y1, y2, y3);
int z2 = f(y1);
int z3 = f(z2);
// результаты должны совпасть
printf("%d %d %d\n", y1, z2, z3);