为什么 4 是最常见的 UUID 字符?

Why is 4 the most recurring UUID character?

我在 Java 中编写了一个小程序,它生成 5000 个 运行dom UUID 并在其中找到最常见的字符,结果我总是得到“-”之后最常见的字符”(显然总是出现 20.000 次)是“4”(我 运行 程序多次总是得到相同的结果)。

我只是对这个事实很好奇,想知道是否有人有技术解释,或者这是否真的只是巧合。

谢谢!

这是我用来生成 5000 个 运行dom UUID 的函数。

 UUID.randomUUID().toString();

因为 UUID 不是完全随机的。查看维基百科上的 Universally unique identifier,其中解释了各种版本。

它们看起来像:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

其中 M 和 N 绝对不是随机的(它们表示版本和变体),其余部分也可能不是随机的,具体取决于您使用的模式。您编写的代码获得版本 4,这意味着 'M' 始终为 4,并且 'N' 的一半也保持不变。你得到 122 位的随机性;不是 128.

4 是最常见的数字,因为根据 UUID 设计,第 13 个 'digit' 始终是 4。