想得到一个四位的随机数,有没有更好的算法?
我想得到一个四位的并且各位不重复的数字,如1982、3680,我使用下面的算法,得到的结果虽然符合要求,但是数字重复出现的频率太高,如1982、xxxx、xxxx、xxxx、然后又出现了1982。请问各位大侠有没有一个改进的算法解决这个问题?
算法如下:(用VB)
Public key As Single
Public vextec(10) As Boolean
Public result(4) As Integer
Public resultIs(4) As Boolean
Public Function getNum()
Dim temp As Single
Dim curKey As Integer
Randomize
curKey = Int(10 * Rnd)
getNum = curKey
End Function
Public Sub getResult()
Dim i As Integer
Dim tmpKey As Integer
For i = 1 To 4
resultIs(i) = False
Next i
For i = 1 To 10
vextec(i) = False
Next i
For i = 1 To 4
While resultIs(i) = False
tmpKey = getNum()
If vextec(tmpKey) = False Then
result(i) = tmpKey
resultIs(i) = True
vextec(tmpKey) = True
End If
Wend
Next i
End Sub