我的程序是这样的
Const STRINGSOURCE = "0123456789abcdefghijklmnopqrstuvwxyz"
'随机字符串生成,lngNum:随机数生成的长度
Public Shared Function generateRndString(ByVal lngNum As Long) As String
Dim rndString As String = String.Empty
If lngNum <= 0 Then
Return rndString
End If
Dim i As Long
Dim intLength As Integer
intLength = Len(STRINGSOURCE) - 1
For i = 1 To lngNum
rndString = rndString & Mid(STRINGSOURCE, Int(Rnd() * intLength + 1), 1)
Next
Return rndString
End Function
这个为什么每次重新启动VS再次调用函数生成的第一个函数随机数都是一样的?
用实例说明吧。。
Private Sub Command1_Click()
Print Int(Rnd * 10)
End Sub
你运行下 3次就好~比如得出3个随机数结果为 7 7 5 你关闭程序 再次运行 它还是7 7 5
Private Sub Command1_Click()
Randomize
Print Int(Rnd * 10)
End Sub
而有加随机种子randomize 的话你关闭再运行 出来的结果就不一样了 就不是 7 7 5 就可能是 5 5 6 或者其他
我这样也试了,但我运行32次8位的随机数就会重复,这是什么原因?
@易之名: 我的意思是你得看看为什么会重复,这是因为种子的问题,如果你想不重复。
反正以后编程的时间还长,你去把这事搞清楚,并不需要太多时间的。
另外,你弄这么麻烦就为了一个随机字符串,不如直接使用GUID,也是数字和字母的组合。
36个字符,你要是嫌太长,就弄短一些好了。
@爱编程的大叔: System.Guid.NewGuid.ToString就是这么写吗?
@易之名: randomize是有两个重载方法的,其中一个是randomize(number as Double),
你提供不同的number就可以再将重复的概率降低了。
@易之名: 我是想将生成随机数作为数据库中的主KEY
@易之名: 你不知道SQL SERVER支持GUID当主键的吗?而且数据库直接支持自动生成的。