Presumiblemente, tiene razones para creer que el algoritmo para producir Guías no está produciendo números verdaderamente aleatorios, sino que está ciclando con un período << 2 ^ 128.
por ejemplo, el método RFC4122 utilizado para derivar GUID que fija los valores de algunos bits.
La prueba de ciclismo dependerá del posible tamaño del período.
Para períodos pequeños, la tabla hash de hash (GUID) -> GUID con reemplazo en caso de colisión si los GUID no coinciden (terminan si lo hacen) podría ser un enfoque. Considere también hacer el reemplazo solo una fracción aleatoria del tiempo.
En última instancia, si el período máximo entre colisiones es lo suficientemente grande (y no se conoce de antemano), cualquier método solo generará una probabilidad de que la colisión se encuentre si existiera.
Tenga en cuenta que si el método de generación de Guías se basa en el reloj (consulte el RFC), entonces puede que no sea posible determinar si existen colisiones porque (a) no podrá esperar el tiempo suficiente para que el reloj finalice, o (b) no puede solicitar suficientes Guías dentro de un tic del reloj para forzar una colisión.
Alternativamente, puede mostrar una relación estadística entre los bits en el Guid, o una correlación de bits entre los Guid. Tal relación podría hacer que sea altamente probable que el algoritmo sea defectuoso sin necesariamente ser capaz de encontrar una colisión real.
Por supuesto, si solo quieres probar que las Guías pueden colisionar, entonces una prueba matemática, no un programa, es la respuesta.