gpt4 book ai didi

.net - 为什么 Guid.NewGuid 总是在完全相同的位置有一个 4?

转载 作者:行者123 更新时间:2023-12-03 09:31:00 27 4
gpt4 key购买 nike

我创建了一个只生成随机 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

(它在 VB.Net 中,因为我刚刚参加了一些在线类(class),并且正在玩弄它。)

这是一个屏幕截图:

enter image description here

如您所见,每个生成的 GUID 都有一个 4在完全相同的地方......有谁知道为什么?

最佳答案

并非 GUID 的所有 128 位都是随机的。

这个字符代表 UUID 版本(在你的例子中是版本 4),它的四位不应该是随机的。

还有一个:

下一个连字符之后的下一个第一个字符也不是完全随机的,它的一些位是确定的并且实际上是编码 UUID 版本的变体。

请注意,在您的运行中,最后一个字符的所有值都大于或等于 8 ,并且小于 c这意味着十六进制值的第一位始终为 10 : 10xx ,这意味着您使用的是 UUID 版本 4,变体 1。

https://en.wikipedia.org/wiki/Universally_unique_identifier了解更多信息。

而且……这就是确定的位的全部内容,所以别担心,您的 GUID 仍然是唯一的!

关于.net - 为什么 Guid.NewGuid 总是在完全相同的位置有一个 4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61870511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com