Algorithm 如何根据latitude&;生成4位验证码;经度信息?

Algorithm 如何根据latitude&;生成4位验证码;经度信息?,algorithm,hash,Algorithm,Hash,我的应用程序需要此功能: 用户A可以上传他的位置信息,并获得添加代码 在服务器上生成 用户B可以输入添加代码,还必须上传其位置 信息。只有当userA和userB足够接近并添加代码时 他们终于可以成为朋友了 在计算距离和比较添加代码之前,我将检查 他们的城市编号(每个城市唯一)是否相同。换句话说 换句话说,我必须确保在每个城市,添加代码不会 同时(或几分钟内)与另一方发生冲突 当然,一个4位数的数字不能满足所有的可能性,但是有没有办法生成这个4位数的数字来尽可能地满足这个特性呢 有没有办法生成这

我的应用程序需要此功能:

  • 用户A可以上传他的位置信息,并获得添加代码 在服务器上生成
  • 用户B可以输入添加代码,还必须上传其位置 信息。只有当userA和userB足够接近并添加代码时 他们终于可以成为朋友了
  • 在计算距离和比较添加代码之前,我将检查 他们的城市编号(每个城市唯一)是否相同。换句话说 换句话说,我必须确保在每个城市,添加代码不会 同时(或几分钟内)与另一方发生冲突

    当然,一个4位数的数字不能满足所有的可能性,但是有没有办法生成这个4位数的数字来尽可能地满足这个特性呢

  • 有没有办法生成这个4位数的数字来尽可能地满足这个特性

    对。可能有数百万种方法可以生成一个4位数的数字(其中几乎所有方法都很糟糕,不能满足大多数要求);如果你按照它们满足的程度对它们进行排序,那么其中一个必须尽可能满足特征

    真正的问题是,“尽可能多”会有多可怕和不令人满意

    如果假设为4位小数;然后您将被限制为10000个位置或10000个唯一用户。这不太可能足够做任何好事

    如果假设为4个十六进制数字;然后您将被限制为65536个位置或65536个唯一用户。这样更好,但仍然不够

    所以。。如果你用“基地1234567”怎么办?在这种情况下,4位数字具有2323050529221951952581345121排列。地球表面大约有5.101亿平方公里,因此这足以非常精确地编码一个位置(可能在几米之内?)

    有没有办法生成这个4位数的数字来尽可能地满足这个特性

    对。可能有数百万种方法可以生成一个4位数的数字(其中几乎所有方法都很糟糕,不能满足大多数要求);如果你按照它们满足的程度对它们进行排序,那么其中一个必须尽可能满足特征

    真正的问题是,“尽可能多”会有多可怕和不令人满意

    如果假设为4位小数;然后您将被限制为10000个位置或10000个唯一用户。这不太可能足够做任何好事

    如果假设为4个十六进制数字;然后您将被限制为65536个位置或65536个唯一用户。这样更好,但仍然不够


    所以。。如果你用“基地1234567”怎么办?在这种情况下,4位数字具有2323050529221951952581345121排列。地球表面约为5.101亿平方公里,因此这足以非常精确地编码一个位置(可能在几米之内?)。

    假设该序列在有限的时间内发生(并且Add代码并非始终有效):

    您的4位数字不需要全局唯一,只需要在此时间窗口内唯一。因此,根据这一观察结果,维护一个Add代码表,这些代码是何时发布的,针对什么位置发布的。随机生成它们,确保它们不在表中。定期删除所有已过期的添加代码

    如果您从未有超过10000个用户同时尝试相互连接,这将起作用


    如果您需要更多的考虑,允许在表中重复,但使用LAT/LUN确保相同的添加代码永远不会分配到2x内的任何点,允许配对的最大距离。

    < P>假设这个序列发生在有限的时间内(而不是添加代码对于所有时间是有效的):

    您的4位数字不需要全局唯一,只需要在此时间窗口内唯一。因此,根据这一观察结果,维护一个Add代码表,这些代码是何时发布的,针对什么位置发布的。随机生成它们,确保它们不在表中。定期删除所有已过期的添加代码

    如果您从未有超过10000个用户同时尝试相互连接,这将起作用


    如果您需要更多的考虑,允许在表中重复,但使用LAT/Load确保相同的添加代码永远不会分配到2x内的任何点,允许配对的最大距离。

    代码不需要以任何方式连接到该位置,只是通过唯一。我说得对吗?如果您只是想确保没有冲突,那么可以在服务器中使用
    工厂设计模式。这样你就可以控制创建的代码。当用户B输入用户C而不是A的添加代码时会发生什么?@domen这就是为什么我必须检查他们的城市代码是否相同,并确保添加代码不会与同一城市中的其他代码冲突,假设同时使用此服务的用户数少于10000。您还没有真正回答。:)我所想的是意外错误的添加代码(可能是破坏性的,因为这项服务正在增长;例如,我的城市有1000万居民),也可能是故意错误的(有人只是粗暴地强迫他们中的10000人,可能会反复添加该地区的所有朋友)。代码不需要以任何方式连接到该位置,只需通过唯一的连接即可。我说得对吗?如果您只是想确保没有冲突,那么可以在服务器中使用
    工厂设计模式。这样你就可以控制创建的代码。当用户B输入用户C而不是A的添加代码时会发生什么?@domen这就是为什么我必须检查他们的城市代码是否相同,并确保添加代码不会与同一城市中的其他代码冲突,假设同时使用此服务的用户数少于10000。您还没有真正回答。:)我在想什么