Vermutlich haben Sie Grund zu der Annahme, dass der Algorithmus zur Erzeugung von Guids keine wirklich zufälligen Zahlen erzeugt, sondern tatsächlich mit einer Periode << 2 ^ 128 fährt.
Beispiel: RFC4122-Methode zum Ableiten von GUIDs, mit der die Werte einiger Bits festgelegt werden.
Der Nachweis des Radfahrens hängt von der möglichen Größe des Zeitraums ab.
Für kleine Zeiträume kann die Hash-Tabelle des Hash (GUID) -> GUID mit Ersetzung bei Kollision, wenn die GUIDs nicht übereinstimmen (beenden, wenn dies der Fall ist), ein Ansatz sein. Erwägen Sie auch, den Austausch nur in einem zufälligen Bruchteil der Zeit durchzuführen.
Wenn die maximale Zeitspanne zwischen Kollisionen groß genug ist (und nicht im Voraus bekannt ist), ergibt eine Methode letztendlich nur eine Wahrscheinlichkeit, dass die Kollision gefunden wird, wenn sie existiert.
Beachten Sie, dass wenn die Methode zum Generieren von Guids uhrbasiert ist (siehe RFC), möglicherweise nicht festgestellt werden kann, ob Kollisionen vorliegen, da entweder (a) Sie nicht lange genug warten können, bis sich die Uhr dreht. oder (b) Sie können nicht genügend Guids innerhalb eines Takts anfordern, um eine Kollision zu erzwingen.
Alternativ können Sie möglicherweise eine statistische Beziehung zwischen den Bits in der Guid oder eine Korrelation der Bits zwischen Guids anzeigen. Eine solche Beziehung könnte es sehr wahrscheinlich machen, dass der Algorithmus fehlerhaft ist, ohne notwendigerweise eine tatsächliche Kollision finden zu können.
Wenn Sie nur beweisen möchten, dass Guids kollidieren können, ist natürlich ein mathematischer Beweis, kein Programm, die Antwort.