gpt4 book ai didi

c# - 如何确保生成的 guid 在全局范围内是唯一的?

转载 作者:可可西里 更新时间:2023-11-01 08:41:41 26 4
gpt4 key购买 nike

假设我想将一个 guid 设置为我的应用程序的程序集 guid。从互联网上搜索,我们可以使用 (new Guid()).Next() 来获取新的唯一值。

我无法弄清楚如何保证我的 guid 相对于其他 guid 是独一无二的?如果您知道该怎么做,请解释一下。

最佳答案

您唯一的保证是概率就在您这一边。 2^128 个可能的 GUID 和创建过程中的一些巧妙之处使您不太可能看到重复项。

好像V4现在是 Windows 上的标准 GUID。如果那个纯粹基于伪随机数生成器,正如维基百科似乎指出的那样,它会受到 Birthday problem 的影响。 .

我见过几个使用 128 位的示例,表明复制几乎是不可能的。那些人经常错过两件事。生日问题和 V4 GUID 实际上是 124 位。

您需要 1/2+sqrt(1/4-2*2^124*ln(0,5)) ≈ 5.4*10^18 GUID 才能达到 50% 的机会复制。这仍然很多,但 50% 可能不是您正在寻找的交易。假设您希望它是百万分之一以获得重复项,那么您可以有 sqrt(2*2^124*ln(1/(1-0,000001))) ≈ 6, 5*10^15 个 GUID。如果您每秒创建一千个 GUID,您可以继续这样做将近 206667 年,然后才能达到一到一百万的重复风险。 6,52191054316287e15/(3600*24*365,25*1000) ≈ 206666,874006986

我得到所有这些计算正确的机会→0。

关于c# - 如何确保生成的 guid 在全局范围内是唯一的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975310/

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