Вот грубое начало решения этой проблемы, включающее равномерное распределение и максимальную нагрузку.
Вместо урн и шаров, урн, ящиков, ведер или м и н в качестве обозначений будут использоваться люди (p) и двери (d).
Существует точное ожидаемое значение для каждой двери для определенного количества людей. Например, при 5 человек и 5 дверях ожидаемая максимальная дверь точно на 1,2864 {(1429-625) / 625} выше среднего значения (p / d), а минимальная дверь точно -0,9616 {(24-625) / 625 } ниже среднего. Абсолютное значение расстояния самой высокой двери от среднего значения немного больше, чем у самой маленькой двери, потому что все люди могут пройти через одну дверь, но не менее нуля может пройти через одну из дверей. При большом количестве людей (p / d> 3000) разница между абсолютной величиной расстояния от самой высокой двери до средней и самой низкой двери становится незначительной.
Для нечетного числа дверей центральная дверь по существу равна нулю и не масштабируется, но все остальные двери масштабируются из определенных значений, представляющих p = d. Эти округленные значения для d = 5:
-1,163 -0,495 0 * 0,495 1,163
* медленно приближается к нулю от -0.12
Из этих значений вы можете вычислить ожидаемое количество людей для любого количества людей, проходящих через каждую из 5 дверей, включая максимальную дверь. За исключением средней упорядоченной двери, разница со средним масштабируется на sqrt (p / d).
Итак, для p = 50000 и d = 5:
Ожидаемое количество людей, проходящих через максимальную дверь, которая может быть любой из 5 дверей, = 1.163 * sqrt (p / d) + p / d.
= 1,163 * кв.м. (10000) + 10000 = 10 116,3
Для p / d <3000 результат из этого уравнения должен быть немного увеличен. </p>
С увеличением числа людей средняя дверь медленно становится все ближе и ближе к нулю с -0.11968 при p = 100 и d = 5. Его всегда можно округлить до нуля, и, как и у других 4-х дверей, разница довольно велика.
Значения для 6 дверей:
-1,272 -0,643 -0,202 0,20,6 0,643 1,272
Для 1000 дверей приблизительные значения:
-3,25, -2,95, -2,79… 2,79, 2,95, 3,25
Для любых d и p существует точное ожидаемое значение для каждой из заказанных дверей. Надеемся, что существует хорошее приближение (с относительной погрешностью <1%). Какой-то профессор или математик где-то должен знать. </p>
Для тестирования равномерного распределения вам потребуется несколько усредненных упорядоченных сеансов (хорошо работает 750-1000), а не большее количество людей. Независимо от того, что различия между действительными сессиями велики. Это природа случайности. Столкновения неизбежны. *
Ожидаемые значения для 5 и 6 дверей были получены путем вычисления полной грубой силы с использованием 640-битных целых чисел и усреднения сходимости абсолютных значений соответствующих противоположных дверей.
Для d = 5 и p = 170:
-6.63901 -2.95905 -0.119342 2.81054 6.90686
(27.36099 31.04095 33.880658 36.81054 40.90686)
Для d = 6 и p = 108:
-5,19024 -2,7711 -0,973979 0,734434 2,66716 5,53372
(12.80976 15,2289 17,026021 18,734434 20,66716 23,53372)
Я надеюсь, что вы можете равномерно распределить ваши данные.
- Почти гарантировано, что все сыновья Джорджа Формана или другие подобные ситуации будут бороться с вашей хэш-функцией. А правильное непредвиденное планирование - работа всех хороших программистов.