取不重复的随机数解决方法
取不重复的随机数
Dim b, k, i
b = 55
Open "d:\a.txt " For Output As #1
For k = 0 To 9
Randomize
i = Int(Rnd() * 55) + 1
Print #1, i
Next k
Close #1
我想从0-55之间得到10个不重复的数字,但总是出现重复,请高手帮忙解决!谢谢!
------解决方案--------------------
晕,忘记贴地址了:
http://topic.****.net/T/20060830/11/4985999.html
------解决方案--------------------
Sub getRndNum()
Dim get_num(55) As Integer
Dim lsNum(10) As String
Dim aaa As Integer, k As Integer, i As Integer
Randomize
k = 0
Do While k < 10
aaa = Int(Rnd * 55) + 1
If get_num(aaa) <> 1 Then
k = k + 1
get_num(aaa) = 1
lsNum(k) = aaa
End If
Loop
Debug.Print Join(lsNum, ", ")
End Sub
------解决方案--------------------
我的Blog里有
http://blog.****.net/kitegirl/
参见里面的“跳蚤算法”专门讲这个问题的。
------解决方案--------------------
Randomize timer
dim abc(55) as intger,x as long,id as long
dim tmp as intger
for x =0 to 55
abc(x)=x)
next
for x=0 to 9
id =fix(rnd() *56) '取0-55之前的随机数
tmp= abc(x)
abc(x) =abc(id)
abc(id)=tmp
next
以上代码(调试)可以实现abc()里,前10个元素是乱序(随机)的
Dim b, k, i
b = 55
Open "d:\a.txt " For Output As #1
For k = 0 To 9
Randomize
i = Int(Rnd() * 55) + 1
Print #1, i
Next k
Close #1
我想从0-55之间得到10个不重复的数字,但总是出现重复,请高手帮忙解决!谢谢!
------解决方案--------------------
晕,忘记贴地址了:
http://topic.****.net/T/20060830/11/4985999.html
------解决方案--------------------
Sub getRndNum()
Dim get_num(55) As Integer
Dim lsNum(10) As String
Dim aaa As Integer, k As Integer, i As Integer
Randomize
k = 0
Do While k < 10
aaa = Int(Rnd * 55) + 1
If get_num(aaa) <> 1 Then
k = k + 1
get_num(aaa) = 1
lsNum(k) = aaa
End If
Loop
Debug.Print Join(lsNum, ", ")
End Sub
------解决方案--------------------
我的Blog里有
http://blog.****.net/kitegirl/
参见里面的“跳蚤算法”专门讲这个问题的。
------解决方案--------------------
Randomize timer
dim abc(55) as intger,x as long,id as long
dim tmp as intger
for x =0 to 55
abc(x)=x)
next
for x=0 to 9
id =fix(rnd() *56) '取0-55之前的随机数
tmp= abc(x)
abc(x) =abc(id)
abc(id)=tmp
next
以上代码(调试)可以实现abc()里,前10个元素是乱序(随机)的