随机数的产生

来源:互联网 发布:西安泽佳软件 编辑:程序博客网 时间:2024/04/24 12:25

    Private Shared Function GeneratePassword(ByVal nLength)
        Dim i, bMadeConsonant, c, nRnd

        Const strDoubleConsonants = "bd9fgl0mnp3st"
        Const strConsonants = "b1c4dfg2hk8lmn7pqr6stv"
        Const strVocal = "a1ei5ou"

        GeneratePassword = ""
        bMadeConsonant = False

        For i = 0 To nLength
            nRnd = Rnd()
            If GeneratePassword <> "" And (bMadeConsonant <> True) And (nRnd < 0.15) Then
                c = Mid(strDoubleConsonants, Int(Len(strDoubleConsonants) * Rnd() + 1), 1)
                c = c & c
                i = i + 1
                bMadeConsonant = True
            Else
                If (bMadeConsonant <> True) And (nRnd < 0.95) Then
                    c = Mid(strConsonants, Int(Len(strConsonants) * Rnd() + 1), 1)
                    bMadeConsonant = True
                Else
                    c = Mid(strVocal, Int(Len(strVocal) * Rnd() + 1), 1)
                    bMadeConsonant = False
                End If
            End If
            GeneratePassword = GeneratePassword & c
        Next

        If Len(GeneratePassword) > nLength Then
            GeneratePassword = GeneratePassword.ToString.Substring(0, nLength)
        End If

    End Function

 

 

测试:

Dim findBool As Boolean = True
Dim strRnd As String = ""

dim sql as string=""


Do While findBool
    StrRandomize(CStr(Now) & CStr(Rnd()))
    strRnd = GeneratePassword(4)
    StrRandomize(CStr(Now) & CStr(Rnd()))
    strRnd = strRnd & "-" & GeneratePassword(4)
    StrRandomize(CStr(Now) & CStr(Rnd()))
    strRnd = strRnd & "-" & GeneratePassword(4)
    sql = "select RANDOMCODE from tbl where RANDOMCODE='" & strRnd & "'"
    If getstr(sql) = "" Then
        findBool = False
    End If
Loop

 

最终得到:strRnd