对于由IEEE 32位浮点数组成的散列2d和3d向量,有什么好的散列函数(快速,良好的分布,很少的碰撞).我假设一般的3d向量,但假设法线(始终在[-1,1])的算法也是受欢迎的.我也不担心比特操纵,因为IEEE浮动也是IEEE浮动.
另一个更普遍的问题是散列Nd浮点向量,其中N非常小(3-12)并且是常量但在编译时不知道.目前我只是将这些花车作为uint并将它们混合在一起,这可能不是最好的解决方案.
我目前正在用C++实现一个哈希表,我正在尝试为浮点数创建一个哈希函数...
我打算通过填充十进制数来将浮点数视为整数,但后来我意识到我可能会用大数字来达到溢出...
哈希浮点数是否有好方法?
你不必直接给我这个功能,但我想看/理解不同的概念......
笔记:
我不需要它真的很快,如果可能的话,只是均匀分布.
我已经读过浮点数不应该因为计算的速度而被散列,有人可以确认/解释这个并给我其他原因,为什么浮点数不应该被散列?我真的不明白为什么(除了速度)
我正在尝试使用固定网格大小方法执行宽相碰撞检测。因此,对于每个实体的位置:(x,y,z)(每个类型为float),我需要找到实体所在的单元格。然后,我打算将所有单元格存储在哈希表中,然后进行迭代报告(如果有)冲突。
因此,这就是我正在做的事情:网格单元的位置:(整数类型)(Gx,Gy,Gz)=>(x / M,y / M,z / M),其中M是网格的大小。
一次,我有一个单元格,我想将其添加到哈希表中,其键是基于(Gx,Gy,Gz)的唯一哈希,其值是单元格本身。现在,我想不出一个好的哈希函数,对此我需要一些帮助。
有人可以建议我一个好的哈希函数吗?
谢谢
我已经搜索了一些教程等来帮助解决这个问题,但似乎找不到任何东西。
我有两个 n 维 numpy 数组列表(某些图像的 3D 数组形式),并且想要检查每个列表中的重叠图像。可以说列表 a 是训练集,列表 b 是验证集。一种解决方案是使用嵌套循环并检查每对数组是否相等,np.array(a[i], b[j])但这很慢(每个列表中有大约 200,000 个 numpy 数组)并且坦率地说非常恶心。
我正在考虑实现此目的的一种更优雅的方法是对每个列表中的每个 numpy 数组进行哈希,然后使用这些哈希表比较每个条目。
首先,这个解决方案是否正确,其次,我将如何实现这一目标?
下面是一些数据的示例。
train_dataset[:3]
array([[[-0.5 , -0.49607843, -0.5 , ..., -0.5 ,
-0.49215686, -0.5 ],
[-0.49607843, -0.47647059, -0.5 , ..., -0.5 ,
-0.47254902, -0.49607843],
[-0.49607843, -0.49607843, -0.5 , ..., -0.5 ,
-0.49607843, -0.49607843],
...,
[-0.49607843, -0.49215686, -0.5 , ..., -0.5 ,
-0.49215686, -0.49607843],
[-0.49607843, -0.47647059, -0.5 , ..., -0.5 ,
-0.47254902, -0.49607843],
[-0.5 , -0.49607843, -0.5 , ..., -0.5 …Run Code Online (Sandbox Code Playgroud)