Я изучаю фильтры Блума и просматриваю различные хеш-функции в JavaScript.
Например, я нашел это в другом ответе на переполнение стека:
Найдено здесь https://stackoverflow.com/a/7616484/5217568)
String.prototype.hashCode = function() {
var hash = 0, i, chr, len;
if (this.length == 0) return hash;
for (i = 0, len = this.length; i < len; i++) {
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
Если я бегу:
String.prototype.call(null, "hello")
Я получаю числовое значение: 99162322 (две другие хэш-функции меня достали: 1335831723 и 120092131).
Теперь, если я создам гипотетический фильтр Блума с 3 хэш-функциями и 18 индексами (k = 3, m = 18), как эти большие значения индексируются в массиве с индексами от 0 до 17?