2012-10-16 13 views
7

Korzystanie z platformy .NET Framework, czy istnieje sposób na utworzenie losowego identyfikatora GUID w języku C# w określonym przedziale czasu? Na przykład potrzebuję losowego identyfikatora GUID, który jest większy niż ffffffff-ffff-ffff-ffff-1fffffffffffff i mniejszy niż ffffffff-ffff-ffff-ffff-2fffffffffffff.Utwórz losowy identyfikator GUID w języku C# w określonym przedziale czasu

+0

Co zrobić, jeśli potrzebujesz wygenerować więcej identyfikatorów GUID niż w zakresie? E.g Twój algorytm nazywa się 20 razy dla zakresu ffffffff-ffff-ffff-ffff-fffffffffffff0 do ffffffff-ffff-ffff-ffff-ffffffffffffff? –

+2

To nie tak jak oni działają, ogólnie. Jest w nim jakiś element nie będący losowym, ale z powodów wersjonowania i tak nie można po prostu (z losowymi identyfikatorami GUID) generować jednego w określonym zakresie. W przeciwnym razie nie działałyby tak, jak robią. – ssube

Odpowiedz

7

Zastosowanie 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) tworzy GUID odpowiada:

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

Można losowo parametrów, jak tylko chcesz. Na przykład:

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]... 

Cóż, wpadłeś na pomysł. Trzeba trochę popracować, żeby uzyskać piąty parametr.

+3

Chociaż może to być oczywiste, tylko dlatego, że jest to "Guid", nie oznacza to, że jest to GUID. Oznacza to, że od Ciebie zależy, czy Twój algorytm zapewni globalną wyjątkowość. W przeciwnym razie jest to po prostu "Id". –

Powiązane problemy