2010-06-29 25 views
13

Estoy trabajando en un proyecto en el que necesito generar aproximadamente mil millones de GUID.¿Cuáles son las posibilidades de obtener el mismo GUID en mil millones de iteraciones?

Sé que no se garantiza que los GUID sean únicos, pero son únicos casi todo el tiempo.

Si generé mil millones de GUID, ¿cuál es la probabilidad de que exista una coincidencia?

+0

posible duplicado de [¿Son posibles las colisiones GUID?] (Http: // stackoverflow.com/questions/184869/are-guid-collisions-possible) – tanascius

+0

¿Durante cuánto tiempo va a generar un GUID? – overslacked

+0

todo se hará en un lote, por lo que se tardará en hacerlo – Diskdrive

Respuesta

14

http://blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx

El .NET GUID consiste en

  • 60 bits de marca de tiempo,
  • 48 bits de identificador de equipo,
  • 14 bits de uniquifier, y
  • seis bits se fijo

Por lo tanto, la probabilidad UUID citada por Oscar no funciona aquí. Pero si crea todos sus mil millones de GUID desde una computadora, no hay posibilidad de obtener un duplicado (excepto que está jugando con el reloj ;-)

2

http://en.wikipedia.org/wiki/Uuid#Random_UUID_probability_of_duplicates

n probabilidad

68.719.476.736 = 2^36 = 0,0000000000000004 = 4 × 10^-16)

2.199.023.255.552 = 2^41 = 0,0000000000004 = (4 x 10^-13)

70.368.744.177.664 = 2^46 = 0,0000000004 = (4 × 10^-10)

+0

Habla de .NET GUID, no son completamente aleatorios, como se supone en el artículo. Hay partes causadas por el tiempo y el id. Del procesador (?) ... aún es poco probable que exista la posibilidad de obtener un duplicado en mil millones de GUID en la misma máquina, incluso puede ser imposible. – Hinek

5

Si está creando los GUID de la misma máquina y usando el mismo algoritmo, entonces no tendrás una colisión.

Cuestiones relacionadas