GUID - это просто число
Последнее поколение GUID (версия 4) - это большое случайное число *
Поскольку это большое случайное число, вероятность столкновения ДЕЙСТВИТЕЛЬНО мала.
Самое большое число, которое вы можете сделать с GUID, закончилось:
5,000,000,000,000,000,000,000,000,000,000,000,000
Таким образом, если вы сгенерируете два GUID, вероятность того, что второй GUID будет таким же, как первый:
1 in 5,000,000,000,000,000,000,000,000,000,000,000,000
Если вы сгенерировали 100 МИЛЛИАРДОВ GUID.
Вероятность того, что ваш 100-миллиардный GUID столкнется с другими 99 999 999 999 GUID, составляет:
1 in 50,000,000,000,000,000,000,000,000
Почему 128 бит?
Одна из причин в том, что компьютеры любят работать с кратными 8 битам.
8, 16, 32, 64, 128 и т. Д.
Другая причина в том, что парень, который придумал GUID, чувствовал, что 64 недостаточно, а 256 слишком много.
Вам нужно 128 бит?
Нет, сколько бит вам нужно, зависит от того, сколько чисел вы ожидаете генерировать и насколько вы хотите быть уверенными, что они не сталкиваются.
64-битный пример
Тогда вероятность того, что ваш второй номер столкнется с первым, будет:
1 in 18,000,000,000,000,000,000 (64 bit)
Вместо:
1 in 5,000,000,000,000,000,000,000,000,000,000,000,000 (128 bit)
А как насчет 100-миллиардного числа?
Вероятность того, что ваше 100-миллиардное число столкнется с остальными 99 999 999 999, составит:
1 in 180,000,000 (64 bit)
Вместо:
1 in 50,000,000,000,000,000,000,000,000 (128 bit)
Так стоит ли использовать 64 бита?
Зависит от того, генерируете ли вы 100 миллиардов чисел? Даже если бы вы были тогда, 180 000 000 вас не устраивают?
Немного подробнее о GUID
Я конкретно говорю о версии 4.
Версия 4 на самом деле не использует все 128 бит для части случайного числа, она использует 122 бита. Остальные 6 бит используются для обозначения версии 4 стандарта GUID.
Числа в этом ответе основаны на 122 битах.
И да, поскольку это просто случайное число, вы можете просто взять из него желаемое количество бит. (Просто убедитесь, что вы не берете ни один из 6 бит версий, которые никогда не меняются - см. Выше).
Вместо того, чтобы брать биты из GUID, хотя вы можете вместо этого использовать тот же генератор случайных чисел, из которого GUID получил свои биты.
В нем , вероятно использовался генератор случайных чисел, поставляемый с операционной системой.