首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

这么产生一个4位数字的随机数(作为密码),但用户说重复率很高,请帮看下

2013-03-26 
这样产生一个4位数字的随机数(作为密码),但用户说重复率很高,请帮看下Randomize()For I 0 To 3Str Str

这样产生一个4位数字的随机数(作为密码),但用户说重复率很高,请帮看下
        Randomize()
        For I = 0 To 3
            Str = Str & CStr(Int(Rnd() * 10))
        Next

我这样产生一个4位数字的随机数(作为密码),但是用户说重复率很高
有没有必要改成这样:
        For I = 0 To 3
            Randomize()
            Str = Str & CStr(Int(Rnd() * 10))
        Next


[解决办法]
重复率很高是指什么?
尽量避免第二次运行 Randomize()
尤其是这种循环里运行 Randomize() 容易导致得出的数字都是一样的结果。
[解决办法]
想偷懒的话,直接利用guid:


    Private Function GeneratePasswd() As String
        Dim guidHashCode As String = Math.Abs(Guid.NewGuid().GetHashCode())
        Dim passwd = guidHashCode.Substring(0, 4)
        If passwd < 3 Then
            passwd = guidHashCode.PadLeft(4, "0"c)
        End If
        Return passwd
    End Function

[解决办法]
不觉得,修改后重复率才高呢。

热点排行