.NET Frameworkを使用して、指定した間隔でC#でランダムなGUIDを作成する方法はありますか?たとえば、ランダムなGUIDは、ffffffff-ffff-ffff-ffff-1fffffffffffffより大きく、ffffffff-ffff-ffff-ffff-2fffffffffffffより小さい必要があります。C#でランダムなGUIDを指定した間隔で作成する
7
A
答えて
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)
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」です。 –
範囲内のGUIDより多くのGUIDを生成する必要がある場合はどうなりますか?あなたのアルゴリズムは、ffffffff-ffff-ffff-ffff-fffffffffffff0からffffffff-ffff-ffff-ffff-ffffffffffffffの範囲で20回呼び出されますか? –
これは一般的にどのように動作するのかとは異なります。ランダムではない要素がいくつかありますが、バージョニングの理由などでは、(ランダムなGUIDを使用して)特定の範囲内のものを生成することはできません。さもなければ彼らは彼らのように働かないでしょう。 – ssube