2012-10-16 5 views
7

Verwenden Sie das .NET Framework, gibt es eine Möglichkeit zum Erstellen einer zufälligen GUID in C# innerhalb eines angegebenen Intervalls? Zum Beispiel brauche ich eine zufällige GUID, die größer ist als ffffffff-ffff-ffff-ffff-1fffffffffffff und kleiner als ffffffff-ffff-ffff-ffff-2fffffffffffff.Erstellen Sie eine zufällige GUID in C# innerhalb eines angegebenen Intervalls

+0

Was ist, wenn Sie mehr GUIDs als im Bereich generieren müssen? ZB Ihr Algorithmus wird 20 Mal für den Bereich ffffffff-ffff-ffff-ffff-fffffffffffff0 zu ffffffff-ffff-ffff-ffff-ffffffffffffff aufgerufen? –

+2

Das ist nicht so, wie sie funktionieren, im Allgemeinen. Es gibt ein nicht zufälliges Element, aber aus Gründen der Versionsverwaltung und so können Sie nicht einfach (mit zufälligen GUIDs) eine in einem bestimmten Bereich generieren. Sonst würden sie nicht so arbeiten wie sie. – ssube

Antwort

7

Verwendung this overload:

[CLSCompliantAttribute(false)] 
public Guid(
    uint a, 
    ushort b, 
    ushort c, 
    byte d, 
    byte e, 
    byte f, 
    byte g, 
    byte h, 
    byte i, 
    byte j, 
    byte k 
) 

Guid(0xa,0xb,0xc,0,1,2,3,4,5,6,7) schafft eine Guid, die entspricht:

0000000a-000b-000c-0001-020304050607 

Sie können zufällig die Parameter, wie Sie möchten. Zum Beispiel können Sie tun:

var r[] = new byte[] { 1,2,3,4 } // chosen by fair dice rolls 
           // guaranteed to be random 

var guid = new GUID(0xFFFFFFFF, 0xFFFF, 0xFFFF, 0xFFFF, r[1], r[2], r[3], r[4]... 

Nun, Sie bekommen die Idee. Sie müssen ein wenig drehen, um den fünften Parameter richtig zu bekommen.

+3

Obwohl dies das Offensichtliche bedeuten könnte, nur weil es ein "Guid" ist, bedeutet es nicht, dass es eine GUID ist. Das heißt, es liegt an Ihnen, sicherzustellen, dass Ihr Algorithmus globale Eindeutigkeit gewährleistet. Sonst ist es nur eine 'Id'. –

Verwandte Themen