Javascript 检查随机字符串I';已经生成了一个';我以前没有生成过吗?

Javascript 检查随机字符串I';已经生成了一个';我以前没有生成过吗?,javascript,algorithm,Javascript,Algorithm,我很好奇像这样的地方是如何做到这一点的(它通过一个独特的5位pin码来识别每张图像)。显然,一个人至少会有一个O(n)解决方案(或者至多O(n log(n)),这取决于算法),但由于我预计n将达到数百万,这将是一个不可行的解决方案。imgur很可能在数据库中使用“autonumber”主键。这种密钥中的数字保证是唯一的;它们是按顺序分配的,永远不会被重用(即使它们标识的记录已被删除) 你可以随意咀嚼这些数字,包括imgur使用的字母数字组合。一种方法是使用将返回的数字12345678 7CLZI

我很好奇像这样的地方是如何做到这一点的(它通过一个独特的5位pin码来识别每张图像)。显然,一个人至少会有一个
O(n)
解决方案(或者至多
O(n log(n))
,这取决于算法),但由于我预计
n
将达到数百万,这将是一个不可行的解决方案。

imgur很可能在数据库中使用“autonumber”主键。这种密钥中的数字保证是唯一的;它们是按顺序分配的,永远不会被重用(即使它们标识的记录已被删除)

你可以随意咀嚼这些数字,包括imgur使用的字母数字组合。一种方法是使用将返回的数字12345678

7CLZI
使用Javascript很容易做到:

(1234567890).toString(36)  // => "kf12oi"
parseInt("kf12oi",36) // => 1234567890
尽管您很可能在服务器上进行这些转换,而不是在浏览器中

,将获取大小写字母和数字:

15FsU
另请参见

这可以通过一个简单的方法来完成。这是一个非常有效的算法。它确实有少量误报的缺点。

我不确定我是否在这里得到了正确的结果,但假设您想生成一个随机字符串,然后存储它来访问某个东西,您只需要检查它是否在您的存储中


如果您有一个SQL db表,该表的字符串上有唯一的索引,那么您可以尝试插入。如果由于重复使用唯一密钥而导致插入失败,您就知道使用了它。它几乎是即时的。

您可以使用顺序数字键,然后使用。然后,对其进行编码以获得字符串


很好的一点是恢复密钥非常容易:base64解码,再次执行乘法逆运算,就得到了密钥。

可能字符串不是随机的。也许它像一个计数器,字符串是数字表示的映射。这样,您就可以保证唯一性,就像您列出了从1到10000000的数字一样。为了防止由于缺乏研究工作而导致投票结果下降,您应该简要说明您提到的运行时间算法。