Раз уж тестируете, то поправьте ошибку в вашей реализации hill'а.
У вас
res:=(UINT_TO_REAL(A)/30269.0 + UINT_TO_REAL(B)/30307.0 + UINT_TO_REAL(C)/30323.0)/3.0;
А должно быть
res:=ДРОБНАЯ_ЧАСТЬ_ОТ(UINT_TO_REAL(A)/30269.0 + UINT_TO_REAL(B)/30307.0 + UINT_TO_REAL(C)/30323.0);
Вариант /3 не проходит Runs и FFT тесты на длиннах в 1'000'000 бит
Вариант дробная_часть_от(a/30269.0 + b/30307.0 + c/30323.0) -- проходит.





