@Artyom_Kopan

Как хэшировать вещественные числа?

Простое приведение к int или memcpy(&doubleValue, &intValue, sizeof(double)) не подходит, потому что получается адское количество коллизий, особенно когда на вход поступают близкие значения double.
Какая хэш-функция окажется более эффективной?
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Проблема вашего кода в том, что вы берете лишь первые 4 байта из 8 в double.

Копируете в uint64_t. Если надо меньше бит, то можно домножить на большое простое число и потом взять xor младших и старших бит.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Вещественные числа сами себе прекрасный 64-битный хэш.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы