2012-10-16 77 views
7

使用.NET Framework,是否有一種方法可以在指定的時間間隔內在C#中創建一個隨機GUID?例如,我需要一個大於ffffffff-ffff-ffff-ffff-1fffffffffffff且小於ffffffff-ffff-ffff-ffff-2fffffffffffff的隨機GUID。在指定的時間間隔內在C#中創建一個隨機GUID

+0

如果您需要生成比範圍內更多的GUID,該怎麼辦?例如,對於ffffffff-ffff-ffff-ffff-fffffffffffff0到ffffffff-ffff-ffff -fffffffffffffffff,你的算法被稱爲20次。 –

+2

這通常不是他們工作的方式。有一些非隨機元素,但是出於版本原因等原因,您不能僅僅(隨機GUID)在特定範圍內生成一個元素。否則,他們不會像他們那樣工作。 – ssube

回答

7

使用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)創建一個對應一個GUID:

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

您可以隨機參數任何你喜歡的方式。例如,你可以這樣做:

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

那麼,你明白了。你必須做一些調整以獲得第五個參數。

+3

雖然這可能是明顯的,只是因爲它是一個「Guid」並不意味着它是一個GUID。也就是說,確保您的算法確保全球唯一性由您決定。否則,它只是一個「Id」。 –

相關問題