Калькулятор фильтра Блума

Введите, сколько элементов будет в фильтре и какую долю ложных срабатываний вы готовы терпеть, — и получите число бит, объём памяти и лучшее число хеш-функций. Или переключите режим и проверьте долю ложных срабатываний уже готового фильтра.

Найти
%
Бит (m)9 585 059 bit
Хеш-функций (k)7
Примерно одно ложное срабатывание на
100
Размер в байтах
1 198 133 B
Память
1,14 MiB
Бит на элемент
9,59
Доля при этих m и k
1,0039 %

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. В режиме «Размер для заданной доли» введите число элементов и долю ложных срабатываний в процентах (1 — одно ошибочное «да» на сотню проверок отсутствующих элементов).
  2. Посмотрите число бит, объём памяти в байтах, KiB или MiB и число хеш-функций.
  3. В режиме «Долю для фильтра» введите n, m в битах и k — получите долю ложных срабатываний и лучшее k для такого размера.

Как это работает

Фильтр Блума — массив из m бит. Каждый элемент выставляет k бит, выбранных k хеш-функциями; проверка смотрит на эти k бит. Формулы:

  • m = ⌈−n × ln p ÷ (ln 2)²⌉
  • k = round(m ÷ n × ln 2), не меньше 1
  • p = (1 − e^(−k × n ÷ m))^k

Так как m округляется вверх, а k — до целого, реальная доля немного отличается от заданной; калькулятор показывает её в строке «Доля при этих m и k».

Пример

Миллион элементов при 1 %:

  • m = 1 000 000 × 4,6052 ÷ 0,48045 = 9 585 058,4, вверх — 9 585 059 бит;
  • память: 9 585 059 ÷ 8 = 1 198 133 байта, или 1,14 MiB;
  • k = 9,585 × 0,6931 = 6,64, округляем до 7 хеш-функций;
  • реальная доля при 7 хешах — 1,0039 %, примерно одно ложное срабатывание на 100 проверок.

Советы

  • Удвоение размера фильтра не уменьшает долю вдвое, а примерно возводит её в квадрат: 1 % превращается примерно в 0,01 %.
  • В коде k хеш-функций можно получить из двух: h1 + i × h2 для i = 0 … k − 1.
  • Если элементы нужно удалять, посмотрите на счётные фильтры Блума или фильтры с кукушкиным хешированием.

Частые вопросы

По каким формулам идёт расчёт?

По стандартным: m = −n × ln p ÷ (ln 2)² бит с округлением вверх; k = m ÷ n × ln 2 хеш-функций с округлением до целого; доля ложных срабатываний p = (1 − e^(−k × n ÷ m))^k — по ней же показывается реальная доля после округлений.

Сколько бит нужно на элемент?

Около 4,8 для 10 %, 9,6 для 1 %, 14,4 для 0,1 % и 19,2 для 0,01 %: каждое уменьшение доли в 10 раз стоит примерно 4,8 бита на элемент, сколько бы ни было элементов.

Что будет, если добавить больше элементов, чем планировалось?

Доля ложных срабатываний вырастет. Включите режим «Долю для фильтра», введите свои m и k и большее n — и увидите насколько.

Бывают ли у фильтра Блума ложноотрицательные ответы?

Нет. Если элемент добавлен, фильтр всегда ответит «возможно, есть». Ошибаться он может только в сторону «да» для элементов, которых не добавляли, а удалять элементы обычный фильтр Блума не умеет.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 4 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.