我的应用程序需要此功能:
假设这个序列在有限的时间内发生(而不是Add代码一直有效):
您的4位数字不一定是全球唯一的,它只需要在这个时间窗口内是唯一的。因此,根据这一观察结果,维护一个添加代码表,发布它们的位置和位置。随机生成它们,确保它们不在表中。定期删除任何已过期的添加代码。
如果您没有超过10,000个用户同时尝试相互连接,这将起作用。
如果您需要更多,请考虑允许表格中的重复项,但使用lat / long确保相同的添加代码永远不会分配到2x内允许配对的最大距离内的任何点。
有没有办法生成这个4位数字,以尽可能满足这个功能?
是。可能有数百万种可能的方法来生成一个4位数的数字(其中几乎所有数字都很糟糕并且不满足大多数要求);如果按照它们满足的程度对它们进行排序,那么其中一个必须尽可能地满足该特征。
真正的问题是,“尽可能多”是多么糟糕和不满意?
如果你假设4位小数;那么你只限制10000个地点或10000个独特用户。这对任何好事都不太可能。
如果你假设4个十六进制数字;那么你只限于65536个位置或65536个唯一身份用户。那更好但仍然不够。
那么..如果你使用“base 1234567”怎么办?在这种情况下,4位数字具有2323050529221952581345121排列。地球表面约为5.110亿平方公里,所以这足以非常精确地编码一个位置(可能在几米之内?)。