Может есть алгоритм равномерного распределения на основе хэша SHA256?

Есть массив [1... n] объектов. Кол-во элементов может увеличиваться, т.е. n постепенно растет.
Мы получаем произвольный хэш SHA256. Хочется иметь какой-то алгоритм, который определяет для этого хэша номер объекта из массива, таким образом, чтобы при поступлении очередного хэша брался новый произвольный номер в массиве, но при этом соблюдались условия:
1. Распределение должно быть близким к равномерному
2. Метод должен быть воспроизводимым, т.е. при выпадении определенно хэша, должен выдавать ту же позицию в массиве каждый раз, когда выпадает этот хэш
3. Допустимо для разных хэшей соответствие одной и той же позиции в массиве, при соблюдении условия 1.
4. Хэшей будет больше чем n.
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
15432
@15432
Системный программист ^_^
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Если вам надо, чтобы после увеличения n, хеши выдавали те же позиции - то это невозможно сделать равномерно без запоминания. Потому что пусть n=10 изначально - тогда ЛЮБОЙ хеш должен выдать значение меньше 10. А потом при увеличении n любой хеш, все-равно должен выдать 0-9. Пусть даже n станет 100000 - нельзя использовать добавленные позиции, кроме 10 первых.

Если вы хеш таблицу придумываете, то там при увеличении n все существующие хеши пересчитываются с новым n и все элементы переезжают на новые позиции. Как будто n всегда и было таким.
Ответ написан
Ваш ответ на вопрос

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

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