Так как большинство ответов были сосредоточены на теории, я думаю, что могу что-то добавить к обсуждению, дав практический тест, который я сделал. В моей базе данных около 4,5 миллионов UUID, сгенерированных с помощью Java 8 UUID.randomUUID (). Следующие из них - только некоторые, которые я узнал:
c0f55f62 -b990-47bc-8caa-f42313669948
c0f55f62 -e81e-4253-8299-00b4322829d5
c0f55f62 -4979-4e87-8cd9-1c556894e2bb
b9ea2498-fb32-40ef-91ef-0ba 00060fe64
be87a209-2114-45b3-9d5a-86d 00060fe64
4a8a74a6-e972-4069-b480-b dea1177b21f
12fb4958-bee2-4c89-8cf8-e dea1177b21f
Если бы это было действительно случайно, вероятность наличия подобных идентификаторов UUID была бы значительно ниже (см. Редактирование), поскольку мы рассматриваем только 4,5 миллиона записей. Так что, хотя эта функция хороша, с точки зрения отсутствия коллизий, для меня она не кажется такой хорошей, как это было бы в теории.
Редактировать :
Многие люди, похоже, не понимают этого ответа, поэтому я проясню свою точку зрения: я знаю, что сходство «мало» и далеко не полное столкновение. Однако я просто хотел сравнить UUID.randomUUID () в Java с генератором истинных случайных чисел, что является актуальным вопросом.
В истинном генераторе случайных чисел вероятность возникновения последнего случая будет около = 0,007%. Поэтому я думаю, что мой вывод верен.
Формула объясняется в этой статье вики en.wikipedia.org/wiki/Birthday_problem