概述
对于 [[NSUUID UUID] UUIDString]
产生的字符串有可能重复吗?概率是多少?code代码时是否需要考虑?
探索
根据 NSUUID的苹果官方说明 阐述:
UUIDs (Universally Unique Identifiers)
, 也被称作 GUIDs (Globally Unique Identifiers)
或者 IIDs (Interface Identifiers)
, 是128位值. NSUUID
创建的uuid
符合RFC 4122 version 4
,使用随机字节创建。
RFC 4122 version 4
是什么?
wiki百科 https://en.wikipedia.org/wiki/Universally_unique_identifier 对其进行了详细说明
可见UUID的分为5个版本,version 1
,version 2
, version 3-5
,version 4
,那么看下NSUUID的version 4的重复概率是多少?
version 4
的重复概率
对于version 4, 文章中的 The Random UUID probability of duplicates 计算了这个概率,由于version 4
在总共128位中,2位表示rfc 4122(“leach salz”)uuid,4位表示版本(0100表示“随机生成”),因此随机生成的uuid有122个随机位。
计算概率是0.00000000006(6×10−11)
,相当在大约100
年的时间内每秒生成10亿
个uuid之后,创建一个副本的概率才会达到50%
。
所以重复的概率可以视为 0
参考文章:
1.https://stackoverflow.com/questions/1155008/how-unique-is-uuid/6963990#6963990
2.Random_UUID_probability_of_duplicates
3.https://developer.apple.com/documentation/foundation/nsuuid
4.https://nshipster.com/uuid-udid-unique-identifier/