最有效的方式......独特的随机字符串

Cha*_*ell 4 database asp.net random unique

我需要有效地将5个字符的RANDOM字符串插入数据库,同时确保它是独一无二的.生成随机字符串不是问题,但目前我正在做的是生成字符串,然后检查数据库是否已经存在......如果存在,我重新开始.

有没有更有效的方法来完成这个过程?

请注意,我不想使用GUID或超过5个字符的任何其他内容....我必须坚持5个字符.

PS:我认为它没有区别,但我的字符串都是区分大小写的.

这是"随机字符串"部分

    Public Function GetRandomNumbers(ByVal numChars As Integer) As String
    Dim chars As String() = { _
     "A", "B", "C", "D", "E", "F", _
     "G", "H", "I", "J", "K", "L", _
     "M", "N", "O", "P", "Q", "R", _
     "S", "T", "U", "V", "W", "X", _
     "Y", "Z", "0", "1", "2", "3", _
     "4", "5", "6", "7", "8", "9", _
     "a", "b", "c", "d", "e", "f", _
     "g", "h", "i", "j", "k", "l", _
     "m", "n", "o", "p", "q", "r", _
     "s", "t", "u", "v", "w", "x", _
     "y", "z"}
    Dim rnd As New Random()
    Dim random As String = String.Empty
    Dim i As Integer = 0
    While i < numChars
        random += chars(rnd.[Next](0, 62))
        System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
    End While
    Return random
End Function
Run Code Online (Sandbox Code Playgroud)

Con*_*ole 9

创建一个包含大量5个字符字符串的表,这些字符串按顺序添加(因此它们是唯一的),并将GUID作为其主键.添加一列以指示是否使用它们.

当你需要一个新的数字时,你从池中选择前1,按guid排序(因此它变成随机的),并将结果设置为"花费".

  • 对于基本54随机字符串,表大小为4.59百万,并且您所做的一切都是在从一个表到另一个表中解决相同的问题,除非使用可预测的序列然后不是"随机的". (2认同)