История изменений
Исправление Manhunt, (текущая версия) :
Занятые GUID храняться
Получить свободный GUID без коллизий с (желательно) равной вероятностью среди всех свободных GUID, обращаясь к хранилищу минимальное количество раз.
Когда количество занятых id станет больше 20% из возможных id
Генерируешь рандомный GUID и запрашиваешь у хранилища ближайший к нему неиспользованный. Чтобы эффективно обслуживать такой запрос, хранилище должно оперировать не отдельными GUID-ами, а непрерывными диапазонами GUID-ов: расширять и объединять диапазоны по мере добавления в него новых GUID-ов, сужать и разделять диапазоны по мере уничтожения старых GUID-ов.
Исходная версия Manhunt, :
Занятые GUID храняться
Получить свободный GUID без коллизий с (желательно) равной вероятностью среди всех свободных GUID, обращаясь к хранилищу минимальное количество раз.
Когда количество занятых id станет больше 20% из возможных id
Генерируешь рандомный GUID и запрашиваешь у хранилища ближайший к нему неиспользованный. То есть хранилище должно оперировать не GUID-ами, а непрерывными диапазонами GUID-ов: расширять и объединять диапазоны по мере добавления в него новых GUID-ов, сужать и разделять диапазоны по мере уничтожения старых GUID-ов.