Просто для практики (а не как домашнее задание) я пытался решить эту проблему (CLRS, 3-е издание, упражнение 11.2-6):
Предположим, что мы сохранили n ключей в хеш-таблице размера m, с столкновений, разрешенных цепью, и что мы знаем длину каждого цепи, включая длину L самой длинной цепи. Опишите процедура, которая выбирает ключ равномерно случайно среди ключей в хэш-таблице и возвращает его в ожидаемое время O (L * (1 + m/n)).
То, что я думал до сих пор, состоит в том, что вероятность возврата каждого ключа равна 1/n. Если мы попытаемся получить случайное значение x от 1 до n и попытаемся найти xth ключ в последовательности, сначала отсортированной по ведро, а затем по цепочке в ковше, тогда для поиска правильного ведра потребуется O (m) через ведра один за другим и время O (L), чтобы получить правильный ключ в цепочке.