Я бы рискнул, что он совершенно неправ. BOUNDS должно быть количеством сегментов, или последние несколько сегментов будут использоваться недостаточно.
Кроме того, привязка вывода к количеству сегментов должна быть ВНЕ вне хеш-функции. Это деталь реализации этой конкретной хеш-таблицы. У вас может быть очень большая таблица, использующая много ведер, а другая - несколько. Оба должны иметь одинаковую строку-> хэш-функция
Далее, если вы прочитали страницу, на которую вы ссылались, это довольно интересно. Я бы реализовал его хэш-таблицу как что-то вроде 10 000 блоков данных. Для тех, кто не читал ее, в статье предлагается ~ 4 000 000 000 блоков для хранения 1 000 000 или около того возможных слов. Для столкновений у каждого сегмента есть вектор структур слов, каждый из которых содержит счетчик, строку в виде открытого текста и хэш (уникальный внутри блока). Это использовало бы намного меньше памяти и работало бы лучше с современными кешами, так как ваш рабочий набор был бы намного меньше.
Чтобы еще больше сократить использование памяти, вы можете поэкспериментировать с отбраковкой слов из хэша во время фазы ввода, которые выглядят так, как будто они ниже 100 000 на основе текущего подсчета.