日期:2014-05-19  浏览次数:20414 次

随机产生32位数 然后写入数据库 结果产生的都是一样的!
For   i   =   1   To   x
                        code   =   obj.RandomPasswd(32)
                        sqlstr   =   "insert   into   code(shellcode)   values   ( ' "   &   code   &   " ') "
                        obj.fill(sqlstr)

                Next


        '===================================================================
        '函数名:   GetCode
        '功能描述:
        '输入参数
        '创建时间:2007.4.11
        '修改时间:2007.4.11
        '====================================================================
        Public   Function   RandomPasswd(ByVal   intLength   As   Integer)   As   String
                Dim   strPasswd   As   String   =   " "
                Dim   intNum   As   Integer   =   0
                Dim   objRandom   As   Random   =   New   Random
                For   i   As   Integer   =   0   To   intLength   -   1
                        intNum   =   objRandom.Next(3)
                        If   intNum   =   0   Then
                                strPasswd   +=   Chr(objRandom.Next(10)   +   48).ToString()
                        ElseIf   intNum   =   1   Then
                                strPasswd   +=   Chr(objRandom.Next(26)   +   65).ToString()
                        Else
                                strPasswd   +=   Chr(objRandom.Next(26)   +   97).ToString()
                        End   If
                Next
                Return   strPasswd
        End   Function
感谢刚才技术支持的人

------解决方案--------------------
不要每次都new 一个random
从头到尾只new 一次
每次用next取值
------解决方案--------------------
因为 Random 出来的是伪随机数,时间间隔太短容易出你这种情况。

可以使用指定的种子值初始化 Random 类的新实例。

Dim objRandom As Random = New Random

改为:

Dim objRandom As Random = New Random(Convert.ToInt32(DateTime.Now.Ticks)