Node.js 如何生成4位唯一id,如discord id,如#8052
我试过了,但是我使用nodejs和posgresql的时间太长了,因为您使用的是nodejs,所以您可以在数据库中使用标准整数,并在向用户显示时将其转换为base36。在javascript中,数字上的参数为基数:Node.js 如何生成4位唯一id,如discord id,如#8052,node.js,database,algorithm,postgresql,web-applications,Node.js,Database,Algorithm,Postgresql,Web Applications,我试过了,但是我使用nodejs和posgresql的时间太长了,因为您使用的是nodejs,所以您可以在数据库中使用标准整数,并在向用户显示时将其转换为base36。在javascript中,数字上的参数为基数: DECLARE @chars NCHAR(36) SET @chars = N'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' DECLARE @result NCHAR(4) SET @result = SUBSTRING(@chars, CAST(
DECLARE @chars NCHAR(36)
SET @chars = N'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
DECLARE @result NCHAR(4)
SET @result = SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
SELECT @result
如果要将其从base36转换回数字,请使用:
如果希望字符串为4个字符,请生成一个介于46656(“1000”)和1679615(“zzzz”)之间的数字 您可以使用Node.js应用程序生成id。用
Math
b = "1000"
c = parseInt(c, 36) // c = 46656
它将输出如下字符串:92q6
详情如下:
Math.random().toString(36).substr(2, 4) // You can change the `4` to change the length.
javascript中数字类型的toString方法使用可选参数将数字转换为给定的基数。例如,如果您传递2,您将看到您的数字以二进制表示。与十六进制(基数16)类似,基数36使用字母表示9以外的数字。通过将一个随机数转换为基数36,您将得到一堆看似随机的字母和数字
-
什么是“不和谐id”?举个例子。说明约束条件是什么。不清楚为什么你的问题中有奇怪的字母字符串。比如#8016@jdv你应该在原始问题中输入详细信息,可以通过单击按钮进行编辑。你只需要特定范围内的随机数?请不要破坏你的帖子。根据你在这里发布时接受的许可证,它不再是你的专属。hi bro thx回答它可以产生多少变化,它有限制,如果有多少。你是对的,如果你想得到一个真正独特的随机,你必须使用另一种方法。正如Math.random()MDN页面中提到的:“Math.random()不提供加密安全的随机数。不要将它们用于任何与安全相关的事情。请改用Web Crypto API,更确切地说是window.Crypto.getRandomValues()方法。”-
Math.random().toString(36).substr(2, 4) // You can change the `4` to change the length.
Math.random() // 0.2433971674181521
Math.random().toString(36) // 0.ghlhdmdypp8bmx6r