UUID представлены в виде 32 шестнадцатеричных (base-16) цифр, отображаемых в 5 группах, разделенных дефисами.Проблема с вашим вопросом заключается в том, что для любого сгенерированного UUID мы могли бы получить любое допустимое шестнадцатеричное число из набора [0-9, AF] включительно.
Это ставит нас перед дилеммой, поскольку мы не знаем заранее, сколько шестнадцатеричных цифр, сгенерированных для каждого UUID, будет альфа-символом : [AF].Единственное, в чем мы можем быть уверены, это то, что каждый сгенерированный символ UUID имеет 5/16 шанс быть альфа-символом: [AF].Знание этого делает невозможным точный ответ на этот вопрос, поскольку удаление дефисов и буквенных символов оставляет нам UUID переменной длины для каждого сгенерированного UUID ...
С учетом сказанного, чтобы дать ваммы должны знать, что каждый UUID имеет длину 36 символов, включая дефисы.Поэтому, если мы упростим и скажем, что у нас нет дефисов, теперь каждый UUID может быть длиной всего 32 символа.Основываясь на этом, если мы еще больше упростим и скажем, что каждый из 32 символов может быть только числовым символом: [0-9] теперь мы можем дать точную вероятность уникальности каждого сгенерированного, упрощенного UUID (согласно нашемуУпомянутые выше упрощения) :
Предполагается, что UUID представлен 32 символами, где каждый символ является числовым символом из набора [0-9].Мы знаем, что нам нужно сгенерировать 32 числа, чтобы создать действительный упрощенный UUID.Теперь шансы выбора любого заданного числа: [0-9] равны 1/10.Еще один способ подумать об этом заключается в следующем: каждое число имеет равную возможность быть сгенерированным, и поскольку существует 10 чисел: каждое число имеет 10% -ную вероятность создания.
Кроме того, когда генерируется число, оно генерируется независимо от ранее сгенерированных чисел , т. Е. Каждое сгенерированное число не зависит от результата предыдущего сгенерированного номера.Следовательно, для каждого из 32 сгенерированных числовых символов: каждое число не зависит друг от друга , и поскольку результатом любого выбранного числа является число, и только число от [0-9] можно сказать, что каждое выбранное число является взаимоисключающим друг для друга.
Зная эти факты, мы можем воспользоваться правилом Product , которое гласит, что вероятность возникновения двух независимых событий является произведением их индивидуальных вероятностей .Например, вероятность получения двух голов на двух бросках монеты составляет 0,5 х 0,5 или 0,25.Следовательно, генерация двух идентичных UUID будет:
1/10 * 1/10 * 1/10 * .... * 1/10 where the number of 1/10s would be 32.
Упрощение до 1/(10^32)
или в целом: до 1/(10^n) where n is the length of your UUID.
Таким образом, при всем этом, как говорится, возможность генерирования двух уникальных UUID, учитывая нашпредположения, это бесконечно мало.
Надеюсь, это поможет!