Каковы шансы получить тот же GUID в 1 миллиард итераций? - PullRequest
14 голосов
/ 29 июня 2010

Я работаю над проектом, в котором мне нужно сгенерировать около 1 миллиарда GUID.

Я знаю, что GUID не гарантированно уникален, но почти всегда уникален.

ЕслиЯ сгенерировал миллиард GUID, какова вероятность того, что будет совпадение?

Ответы [ 3 ]

15 голосов
/ 29 июня 2010

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

.NET GUID состоит из

  • 60 бит метки времени,
  • 48 бит идентификатора компьютера,
  • 14 битов уникального, и
  • шесть битов фиксированы

Так что вероятность UUID, указанная Оскаром, здесь не работает.Но если вы создадите все свои 1 миллиард GUID с одного компьютера, у вас не будет возможности получить дубликат (кроме случаев, когда вы играете с часами; -)

5 голосов
/ 29 июня 2010

Если вы создаете GUI с того же компьютера и используете тот же алгоритм, вы не столкнетесь с конфликтом.

2 голосов
/ 29 июня 2010

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

n вероятность

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)

...