Javascript 如何生成只有7个字符的UID并排除重复,如imgur.com
请查看此URL: 您将看到URL生成了一个看似随机的字符串,它是由7个字符组成的Javascript 如何生成只有7个字符的UID并排除重复,如imgur.com,javascript,php,algorithm,Javascript,Php,Algorithm,请查看此URL: 您将看到URL生成了一个看似随机的字符串,它是由7个字符组成的 小写字母(26个字符) 大写字母(26个字符) 数字(10个) n=(26+26+10)=62 我想知道如何生成一个仅包含7个字符的随机字符串,该字符串用作GUID imgur仅使用7个字符,就可以生成3.521.614.606.208个变体(62到7的幂)。现在的问题是,imgur如何处理每个用作标识符的变体,因为这些数字似乎是随机生成的 有没有办法找出,如何使用7个字符作为UID并确保它们不会重复 一种解决方案
随机Strin最好是在PHP中生成的,我假设它们在后端有一个数据库,并处理冲突。生成一个标识符,看看它是否仍然存在,然后生成另一个标识符,直到得到一个不存在的标识符
或者,他们刚刚增加了一些64位整数,并从中生成了一个字符串。您可以使用这个一行程序生成一个随机字符串:
substr(
str_shuffle(
str_repeat('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', 7)
),
0,
7
)
然后,您可以检查数据库是否已被使用,例如:
while(
existsInTheDB(
$str = substr(
str_shuffle(
str_repeat(
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',
7
)
),
0,
7
)
)
){}
//now you can use $str
由7个字符组成的随机字符串不会也不能用作
GUID
GUID
有它的定义,它的长度存在显然是有原因的。您可以做的是生成一个随机字符串。但是,它永远不会作为GUID.Agree运行。显然,即使stackoverflow使用随机数/递增数作为唯一标识符,即使根据定义它们不是GUID: