gpt4 book ai didi

c# - Guid & GetHashCode 唯一性

转载 作者:IT王子 更新时间:2023-10-29 04:13:32 28 4
gpt4 key购买 nike

给定以下 key :

int key = Guid.NewGuid().GetHashCode();

这个key是否像Guid的唯一性一样唯一?

最佳答案

pigeonhole principle说不。 GUID 有 16 个字节的信息 - 128 位。 int 有 32 位信息。 (编辑:为了澄清评论,据我所知,.NET GUID 将允许任意设置这 128 位;随机生成的 GUID 遵循更严格的模式,因此没有 2128 随机生成的不同值。不过仍然超过 232。)

有 2128 种可能的 GUID 和 232 种可能的哈希码 - 所以你不能可能有不同的哈希码每个 GUID。

不过还有更多 - GetHashCode() 永远意味着代表唯一性。如果它可以,那就太好了 - 但它不是必须的,即使有足够的 int 值可以这样做。

int.GetHashCode() 返回(比方说)除以二的值是完全有效的...所以 -1、0 和 1 都可以获取哈希码0; 3 和 4 将获得 2 等的哈希码。这不是很好(而且它会比仅返回值慢) - 但它会是一个有效的实现。它将满足 GetHashCode 的所有约束 - 也就是说,如果您对两个相等的值调用它,它将返回相同的哈希码。

事实上,为所有 值返回一个常量是一个有效的实现——尽管这是一个非常无用的实现,因为它将哈希表的正常快速查找呈现为 O(N) 操作.

关于c# - Guid & GetHashCode 唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7326593/

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