Единственная гарантия, что у вас есть, - это вероятность на вашей стороне. 2 ^ 128 возможных GUID и некоторая хитрость в процессе создания делает очень маловероятным, что вы когда-либо увидите дубликат.
Кажется, V4 теперь является стандартным GUID для Windows. Если он основан исключительно на генераторе псевдослучайных чисел, как, по-видимому, указывает Википедия, на него влияет проблема Birthday .
Я видел несколько примеров использования 128-бит, чтобы показать, что дублирование практически невозможно. Те часто пропускают две вещи. Проблема дня рождения и того, что GUID V4 на самом деле составляет 124 бита.
Вам нужно 1/2+sqrt(1/4-2*2^124*ln(0,5)) ≈ 5.4*10^18
GUID, чтобы получить 50% вероятности дубликата. Это все еще много, но 50%, возможно, не та сделка, которую вы ищете. Допустим, вы хотите, чтобы дубликат получался один на миллион, тогда вы можете иметь sqrt(2*2^124*ln(1/(1-0,000001)))
≈ 6,5 * 10 ^ 15 GUID. Если вы создаете тысячу идентификаторов GUID в секунду, вы можете продолжать делать это в течение почти 206667 лет, прежде чем рискует получить дубликат с вероятностью от одного до миллиона. 6,52191054316287e15/(3600*24*365,25*1000) ≈ 206666,874006986
Вероятность того, что все эти вычисления будут правильными → 0.