我创建了一个只生成随机 GUID 的控制台应用程序,但我注意到它一直4在同一个位置有一个...为什么会这样?
这是我的代码:
Sub Main()
Dim generatedGuids = New List(Of String)
Dim duplicateGenerated As Boolean = False
Dim index As ULong = 0
While Not duplicateGenerated
Dim generatedGuid As String = Guid.NewGuid.ToString
generatedGuids.Add(generatedGuid)
duplicateGenerated = generatedGuids.Count <> generatedGuids.Distinct.Count
index += 1
Console.WriteLine(index & " - " & generatedGuid)
End While
Console.WriteLine("FOUND A DUPLICATE")
End Sub
Run Code Online (Sandbox Code Playgroud)
(它在 VB.Net 中,因为我刚刚参加了一些在线课程,并且正在玩弄它。)
这是一个屏幕截图:
如您所见,每个生成的 GUID4在完全相同的位置都有一个...有谁知道为什么?
GUID 的所有 128 位并非都是随机的。
该字符代表 UUID 版本(在您的例子中为版本 4),并且它的四位不应是随机的。
还有另一种:
下一个连字符之后的下一个第一个字符也不是完全随机的,它的一些位是确定的,并且实际上正在编码UUID 版本的变体。
请注意,在您的运行中,最后一个字符的所有值都大于或等于8,小于c意味着十六进制值的第一位始终为 10 : 10xx,这意味着您正在使用 UUID 版本 4,变体 1。
有关更多信息,请参阅https://en.wikipedia.org/wiki/Universally_unique_identifier 。
而且...这就是确定位的全部内容,所以不用担心,您的 GUID 仍然是唯一的!
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |