为什么Guid.NewGuid总是在完全相同的位置上有4?

问题描述 投票:0回答:1

我创建了一个控制台应用程序,该应用程序仅生成随机的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

这是屏幕截图:

enter image description here

如您所见,每个生成的GUID在完全相同的位置都有一个4。有人知道为什么吗?

.net random guid
1个回答
0
投票
并非GUID的所有位都是随机的,在128个位中只有122位是随机的。

此字符代表UUID版本(在您的情况下为4),不应认为是随机的。

下一个连字符之后的下一个第一个字符也不是完全随机的,确定了几位并编码了UUID版本的

variant。

请参阅https://en.wikipedia.org/wiki/Universally_unique_identifier了解更多信息。
© www.soinside.com 2019 - 2024. All rights reserved.