【发布时间】:2013-06-24 20:17:06
【问题描述】:
是否可以一个接一个地创建两个重复的 UUID?我不熟悉 UUID 的生成方式,但我猜如果您在同一毫秒内从同一个 MAC 地址创建了两个单独的 UUID,那么它们将完全相同。这是真的吗?
我想我是在同时问两个问题。我很想知道使用哪些参数来生成随机 UUID。我猜它不仅仅是时间戳和 MAC 地址。
【问题讨论】:
标签: uuid
是否可以一个接一个地创建两个重复的 UUID?我不熟悉 UUID 的生成方式,但我猜如果您在同一毫秒内从同一个 MAC 地址创建了两个单独的 UUID,那么它们将完全相同。这是真的吗?
我想我是在同时问两个问题。我很想知道使用哪些参数来生成随机 UUID。我猜它不仅仅是时间戳和 MAC 地址。
【问题讨论】:
标签: uuid
在 Python UUID 包中,它采用时间戳并为 UUIDv1 生成一个随机数 random.randrange(1<<14L),因此您将采用纳秒时间戳加上从 1 到 16384 的随机数,所以...我的猜测是可能,但可能性很小。
如果您担心这是一个问题,您总是有 UUIDv3、UUIDv4 和我的选择 UUIDv5。
【讨论】:
and also generates a random number - 我只是好奇 that 是如何生成的。
uuid.uuid1 -> UUIDv1 将node 和clock_seq 作为参数。如果未给出clock_seq,它会生成一个随机数clock_seq = random.randrange(1<<14L),即1..16384,然后生成clock_seq_low = clock_seq & 0xffL 和clock_seq_hi_variant = (clock_seq >> 8L) & 0x3fL 以传递给UUID 生成器。 If 'clock_seq' is given, it is used as the sequence number; otherwise a random 14-bit sequence number is chosen.
uuid.uuid1 时,您通常只需调用uuid.uuid(),因为node 和clock_seq 是可选的。