2012-10-16 14 views
7

.NET Frameworkを使用して、指定した間隔でC#でランダムなGUIDを作成する方法はありますか?たとえば、ランダムなGUIDは、ffffffff-ffff-ffff-ffff-1fffffffffffffより大きく、ffffffff-ffff-ffff-ffff-2fffffffffffffより小さい必要があります。C#でランダムなGUIDを指定した間隔で作成する

+0

範囲内のGUIDより多くのGUIDを生成する必要がある場合はどうなりますか?あなたのアルゴリズムは、ffffffff-ffff-ffff-ffff-fffffffffffff0からffffffff-ffff-ffff-ffff-ffffffffffffffの範囲で20回呼び出されますか? –

+2

これは一般的にどのように動作するのかとは異なります。ランダムではない要素がいくつかありますが、バージョニングの理由などでは、(ランダムなGUIDを使用して)特定の範囲内のものを生成することはできません。さもなければ彼らは彼らのように働かないでしょう。 – ssube

答えて

7

使用this overload:あなたが好きなようにパラメータをランダム化することができます

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

[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を作成します。たとえば、次の操作を実行できます。

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

5番目のパラメータを正しく取得するには、ちょっとした作業が必要です。

+3

これは明白であるかもしれませんが、単に「Guid」がGUIDであるとは限らないからです。つまり、アルゴリズムがグローバル一意性を保証するかどうかは、あなた次第です。それ以外の場合は単なる「Id」です。 –