我有一个已定义的区域(我知道该区域每个角的x,y坐标)。我需要将ID(int或char数组)散列到限制在该边界区域内的x,y点。得到的散列值,即x,y坐标需要对ID唯一,并且我不希望x,y点聚集在正方形的一部分中,而是均匀地分布在正方形上。
关于如何解决这个问题的任何建议?
非常感谢提前。
答案 0 :(得分:0)
首先,我认为你不能保证唯一性。如果您有maxX*maxY+1
个ID,则必须在同一坐标上有两个ID。
其次,要避免群集,请使用加密安全哈希。
第三,获取x和y坐标(粗略/伪代码):
hashResult = hash(ID)
x = hashResult modulo maxX.
y = ( hashResult div maxX) modulo maxY