tags:

views:

125

answers:

3

I am working on a project where I need to generate approximately 1 billion GUIDs.

I know GUIDs are not guaranteed to be unique but are unique almost all of the time.

If I generated a billion GUIDs, what is the probability that there will be a match?

+2  A: 

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

n probability

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)

Oscar Cabrero
He's talking about .NET GUIDs, they are not entirely random, like assumed in the article. There are parts caused by time and processor id(?) ... still the chance of getting a duplicate in 1 billion GUIDs is very unlikely on the same machine it may be even impossible.
Hinek
+3  A: 

If you are creating the GUIds from the same machine and using the same algorithm then you will not get a collision.

Robin Day
+6  A: 

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

The .NET GUID consists of

  • 60 bits of timestamp,
  • 48 bits of computer identifier,
  • 14 bits of uniquifier, and
  • six bits are fixed

So the UUID probability quoted by Oscar does not work here. But if you create all your 1 billion GUIDs from one computer, there is no chance to get a duplicate (except you are playing with the clock ;-)

Hinek