Хэш-функция определяет индекс в массиве.
Обращение к элементу по индексу происходит за О(1)
Вы передаете ключ-значение на запись "key1" -> "value1"
Хэш от "key1" выдал на значение 12. Вот в массив, в элемент с индексом 12 записывается значение/ссылка на "value1"
Запрашиваем из мэпы значение для "key1" - вычисляется хэш от "key1" (получили 12), вычитали из массива элемент 12 - получили значение
Пока, что получилось понять, это что у юзера1 шансы 5000/5050, а у юзера2 - 50/5050
Почему тогда просто не брать рандомно число в диапазоне от 1 до 5050?