2010-06-29 14 views
13

Sto lavorando a un progetto in cui è necessario generare circa 1 miliardo di GUID.Quali sono le probabilità di ottenere lo stesso GUID in 1 miliardo di iterazioni?

So che i GUID non sono garantiti per essere unici ma sono unici quasi tutto il tempo.

Se ho generato un miliardo di GUID, qual è la probabilità che ci sarà una corrispondenza?

+0

possibile duplicato di [Sono possibili le collisioni GUID?] (Http: // stackoverflow.com/questions/184869/are-guid-collisions-possible) – tanascius

+0

Per quanto tempo verrà generato il GUID? – overslacked

+0

sarà tutto in un unico lotto, quindi per quanto tempo ci vuole per fare ciò – Diskdrive

risposta

14

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

Il NET GUID consiste di

  • 60 bit di timestamp,
  • 48 bit identificatore di computer,
  • 14 bit di uniquifier e
  • sei bit sono riparato

Quindi la probabilità UUID citata da Oscar non funziona qui. Ma se crei tutti i tuoi 1 miliardo di GUID da un computer, non c'è nessuna possibilità di ottenere un duplicato (eccetto che stai giocando con l'orologio ;-)

2

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

n probabilità

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

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

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

+0

Sta parlando di GUID .NET, non sono del tutto casuali, come ipotizzato nell'articolo. Ci sono parti causate da tempo e id del processore (?) ... comunque la possibilità di ottenere un duplicato in 1 miliardo di GUID è molto improbabile sulla stessa macchina potrebbe essere addirittura impossibile. – Hinek

5

Se si sta creando i GUID dalla stessa macchina e usando lo stesso algoritmo, non otterrai una collisione.