0
Я попытался реализовать алгоритм умножения Кнута через немного сдвигая с A = 2654435769 и хэш размером 2^р элементов Но не-движущиеся и меняющиеся алгоритмы дают разный результатКнута через бит сдвига
Там как я пытался реализовать этот два alg:
template int mult_hash_simple(int key) { double A = 0.61803398863412439823150634765625; double exp = A*key; return max_key*(exp - (int) exp); } template int mult_hash_advanced(int key) { // const int w = 32; const unsigned long long A = 2654435769; unsigned long long r0 = key*A; return r0 & ( (1
UPD: обновлено несколько типов var. Проблема все еще существует
Попробуйте использовать 'long long' для' A'. –
Примеры вызовов с выходом? – Barry