2012-10-16 124 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”。 –

相关问题