Никто, кажется, не упоминает фактическую математику вероятности его возникновения.
Во-первых, давайте предположим, что мы можем использовать все 128-битное пространство (Guid v4 использует только 122-битные).
Мы знаем, что общая вероятность НЕ получить дубликат в n
пиках:
(1-1 / 2 128 ) (1-2 / 2 128 ) ... (1- (п-1) / 2 128 )
Поскольку 2 128 намного больше, чем n
, мы можем приблизить это к:
(1-1 / 2 128 ) п (п-1) / 2 * 1 027 ** 1 028 *
И поскольку мы можем предположить, что n
намного больше 0, мы можем приблизить это к:
* * 1034 (1-1 / 2 128 ) п ^ 2/2
Теперь мы можем приравнять это к «приемлемой» вероятности, скажем, 1%:
(1-1 / 2 128 ) n ^ 2/2 = 0,01
Что мы решаем за n
и получаем:
n = sqrt (2 * log 0,01 / log (1-1 / 2 128 ))
Какой Вольфрам Альфа становится 5.598318 × 10 19
Чтобы представить это число в перспективе, давайте возьмем 10000 машин, каждая из которых имеет 4-ядерный ЦП, работает на частоте 4 ГГц и тратит 10000 циклов на генерацию Guid и больше ничего не делает. Затем потребуется около 111 лет, прежде чем они создадут дубликат.