c++ - 随机数或 UUID 的异或

标签 c++ algorithm random

我正在开发数据结构,其中每个实体都应该有唯一的标识符。我正在考虑使用 64 位随机数或 Boost UUID http://www.boost.org/doc/libs/1_57_0/libs/uuid/为此。

如果我复制某些实体,我需要为拷贝生成新的 UUID(因为否则某些实体将具有重复的 UUID)。但更新 UUID 需要更新实体之间的链接。所以我正在考虑对所有 UUID 进行统一更改:在复制实体之前,我将生成一些 LoadingUUID 并使用公式更新所有 UUID:

NewEntityID = EntityID xor LoadingUUID

问题是:两个 UUID 的异或会大大增加 UUID 冲突的概率吗?

最佳答案

如果两个 UUID 具有按位相关性,那么是的,将它们异或在一起会增加冲突的可能性。

编辑:两个独立的 UUID 生成器可能没有按位相关性,但很难确定,并且在创建 UUID 生成器时这不会是任何人的设计或测试目标。如果它们没有相关性,那么我预计碰撞概率不会增加。

相比之下,单个 UUID 生成器的 UUID 结果之间可能具有按位相关性。例如。它可能会将某些位分配给时间戳。

关于c++ - 随机数或 UUID 的异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689631/

相关文章:

c++ - 捕获标准输出到 zip 并使用 CTRL-C 中断会产生损坏的 zip 文件

c++ - 具有模板参数的模板特化

python - 尝试用 python 实现 KNN 算法时出现 TypeError

mysql - Codeigniter 随机行 mysql 错误 - 类 CI_DB_mysqli_result 的对象无法转换为字符串

java - 如何使用 drawLine() 获得一条随机方向拍摄的线?

javascript - 使用浮点源均匀分布整数

c++ - 删除两个相邻元素并用 vector 中的单个元素替换它们

c++ - 链接器找不到现有库

algorithm - 如何快速求助于只有一个更改值的列表?

c++ - 在大矩阵中复制图 block 的高效算法