Может есть алгоритм равномерного распределения на основе хэша SHA256? Есть массив [1... n] объектов. Кол-во элементов может увеличиваться, т.е. n постепенно растет.
Мы получаем произвольный хэш SHA256. Хочется иметь какой-то алгоритм, который определяет для этого хэша номер объекта из массива, таким образом, чтобы при поступлении очередного хэша брался новый произвольный номер в массиве, но при этом соблюдались условия:
1. Распределение должно быть близким к равномерному
2. Метод должен быть воспроизводимым, т.е. при выпадении определенно хэша, должен выдавать ту же позицию в массиве каждый раз, когда выпадает этот хэш
3. Допустимо для разных хэшей соответствие одной и той же позиции в массиве, при соблюдении условия 1.
4. Хэшей будет больше чем n.

24 Мар 2021 в 19:59
123 +1
0
Ответы
1

Для достижения равномерного распределения на основе хэша SHA256 можно воспользоваться методом, который используется в алгоритмах кеширования (например, consistent hashing).
Для этого можно следовать следующему алгоритму:

Создать кольцевую структуру данных, на которой будут располагаться все объекты массива [1...n].Для каждого объекта вычислить его хэш SHA256.Построить отображение хэшей на кольцевую структуру (например, используя круговой массив или другую структуру данных, где каждый объект будет занимать определенный участок).При поступлении нового хэша вычислить его значение и найти ближайший объект на кольцевой структуре.Этому объекту и соответствует позиция в массиве [1...n].

Такой подход обеспечивает равномерное распределение хэшей по объектам массива и при этом гарантирует воспроизводимость результатов - одинаковый хэш будет каждый раз соответствовать одному и тому же объекту массива.

17 Апр в 20:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир