zeros newguid new length example all c# guid

length - system guid newguid c#



¿Cuáles son las posibilidades de obtener un duplicado Guid.NewGuid()? (6)

Posible duplicado:
¿Es un GUID único el 100% del tiempo?
Prueba simple de que GUID no es único

En MSDN puedes leer:

La probabilidad de que el valor del nuevo Guid sea todo ceros o igual a cualquier otro Guid es muy baja.

Digamos que tiene un método que creará un archivo cada segundo, y usa el método Guid.NewGuid() para el nombre de archivo, ¿es posible obtener el mismo Guid entonces? ¿O la computadora local hará un seguimiento de alguna manera? ¿Qué tan baja es la posibilidad?


Definitivamente, se quedará sin espacio en disco o atascará el sistema de archivos antes de que los GUID choquen. Simplemente maneje los errores cuando cree archivos con gracia y estará bien.


Las posibilidades de obtener dos guías idénticas son astronómicamente bajas, incluso si está generando guías lo más rápido posible. (Generando, digamos, miles de guids por segundo con el único propósito de encontrar un duplicado).

Por supuesto, si quiere mi opinión, creo que habrá un tiempo, dentro de un par de miles de años a partir de ahora, cuando estemos colonizando la galaxia, nuestra población estará en los billones, el número de computadoras individuales incrustadas. en todas partes habrá millones y cada una de esas computadoras generará GUID a una velocidad impensable hoy en día, cuando comencemos a tener problemas con la aparición de guías duplicadas de vez en cuando en áreas distantes de la galaxia. y luego volverá a ser como 640k de memoria, DLL de nuevo, error de milenios de dos dígitos, todos ellos combinados.

Lo que pasa con los GUID es que no queremos que sean enormes, porque entonces serían un desperdicio, por lo que alguien tuvo que idear una cantidad de bits que sea lo suficientemente pequeño como para no ser demasiado inútil y lo suficientemente grande como para dar una Garantia razonable contra colisiones. Por lo tanto, es un compromiso tecnológico. En nuestro siglo, 128 bits parecen ser un buen compromiso, pero con casi una certeza matemática habrá otro siglo en el que este compromiso ya no será tan bueno.


Lea la siguiente pregunta para obtener información sobre colisiones: ¿Son posibles las colisiones GUID?

Con respecto al "un guid por segundo", los guid generados usualmente toman en cuenta el tiempo, por lo que en la misma computadora, hay 0 posibilidades de generar el mismo guid a menos que cambie la configuración del reloj interno

edición : aparentemente, la página de wikipedia sobre guids dice que el tiempo no es obligatorio al crear un guid, así que supongo que depende del algoritmo utilizado. Ya que estamos hablando de C # (¿en Windows?) Es de hecho un Wikipedia que incluye el tiempo en algunas versiones.


No debe preocuparse por obtener un GUID duplicado cuando lo crea cada segundo. Puede consultar Wikipedia y leer la probabilidad de duplicar GUID.



Siempre hay alguna posibilidad minúscula de duplicados, pero los Identificadores Únicos Globales están destinados a ser solo eso: globalmente único ... no único en todo el sistema, sino como único en el Planeta Tierra.

Especulo que, en teoría, tiene más posibilidades de duplicar un UUID en varios sistemas, que en un solo sistema. Si bien el sistema operativo no va a almacenar cada GUID que genera, probablemente use datos semilla basados ​​en el tiempo para evitar colisiones en sí mismo. Por supuesto esto depende de la implementación.

Ah, y posibilidades ... bueno, hay 3,4 x 10 ^ 38 disponibles, Wikipedia dice que es más probable que te golpee un meteorito.

También ofreceré un método alternativo, el método Path.GetTempFileName() puede valer la pena estudiarlo, porque tiene protección contra colisiones ... aunque solo puede crear 65,535 nombres de archivos únicos antes de lanzar una excepción si los archivos anteriores no lo son. eliminado

Aparte de eso, no es muy difícil de hacer:

string path; do { path = Guid.NewGuid().ToString(); // Format as needed } while (File.Exists(path));