可以用集合解决,试试: dim icil as new collection dim i as integer, index as integer dim my1
for i =1 to 15 icol.add i '将1-15添加到集合中 next i
for i=1 to icol.count randomize index = cint(rnd * (iCol.count - 1))+ 1 '随机取得index my1 = icol.item(index) '对应index的数字 print my1 icol.remove index '删除这个数字,以免重复 next set icol = nothing
哦 这样: dim icil as collection set icol=new collection
试过了 : Dim iCol As Collection Dim i As Integer, index As Integer Dim Nums
Set iCol = New Collection For i = 1 To 15 iCol.Add i Next
For i = 1 To iCol.count Randomize index = CInt(Rnd * (iCol.count - 1)) + 1 Nums = iCol.Item(index) Print Nums iCol.Remove index Next Set iCol = Nothing
ok 了 谢谢了!!!! 让你看看我的把 哈哈 吓死你,但是也实现了功能.我的头都大了... If n = 2 Then Do Randomize '初始化随机函数 b = Int(a * Rnd(a) + 1) Loop While b = my1 b1 = b End If If n = 3 Then
Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 b2 = b End If If n = 4 Then Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 b3 = b End If If n = 5 Then Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 b4 = b End If If n = 6 Then Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 b5 = b End If If n = 7 Then Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 b6 = b End If If n = 8 Then 8 Randomize b = Int(a * Rnd(a) + 1) While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 b7 = b End If If n = 9 Then 'Case Is = 9 Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 b8 = b End If If n = 10 Then 'Case Is = 10 Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 b9 = b End If If n = 11 Then 'Case Is = 11 Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 b10 = b End If If n = 12 Then 'Case Is = 12 Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10 b11 = b End If If n = 13 Then 'Case Is = 13 Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10 Or b = b11 b12 = b End If If n = 14 Then 'Case Is = 14 Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10 Or b = b11 Or b = b12 b13 = b End If If n = 15 Then 'Case Is = 15 Do Randomize b = Int(a * Rnd(a) + 1) Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10 Or b = b11 Or b = b12 Or b = b13 End If Set rs = Nothing rs.Open "select * from sht01_table where Trim(sht01_table.sht01_ID)='" & Trim(b) & "'", cn, 3, 3
不知道你是什么数据库,如果是SQL,那么SQL语句就可以搞定: select top 5 * from tb order by newid()随机取得5条数据
my1 = Int(15* Rnd() + 1)
dim icil as new collection
dim i as integer, index as integer
dim my1
for i =1 to 15
icol.add i '将1-15添加到集合中
next i
for i=1 to icol.count
randomize
index = cint(rnd * (iCol.count - 1))+ 1 '随机取得index
my1 = icol.item(index) '对应index的数字
print my1
icol.remove index '删除这个数字,以免重复
next
set icol = nothing
icol.add i 时 出现了错误
提示要求对象
田野的方法产生的随机数跟我的一样, faysky 你的和我的一样都是用当前的时间做为rnd函数的随机数种子 都一样不行 小仙妹的跳蚤算法还请指教
谢谢各位的帮忙!!!!
dim icil as collection
set icol=new collection
Dim i As Integer, index As Integer
Dim Nums
Set iCol = New Collection
For i = 1 To 15
iCol.Add i
Next
For i = 1 To iCol.count
Randomize
index = CInt(Rnd * (iCol.count - 1)) + 1
Nums = iCol.Item(index)
Print Nums
iCol.Remove index
Next
Set iCol = Nothing
让你看看我的把 哈哈 吓死你,但是也实现了功能.我的头都大了...
If n = 2 Then
Do
Randomize '初始化随机函数
b = Int(a * Rnd(a) + 1)
Loop While b = my1
b1 = b
End If
If n = 3 Then
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1
b2 = b
End If
If n = 4 Then Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2
b3 = b
End If
If n = 5 Then Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3
b4 = b
End If
If n = 6 Then Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4
b5 = b
End If
If n = 7 Then Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5
b6 = b
End If
If n = 8 Then
8 Randomize
b = Int(a * Rnd(a) + 1)
While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6
b7 = b
End If
If n = 9 Then
'Case Is = 9
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7
b8 = b
End If
If n = 10 Then
'Case Is = 10
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8
b9 = b
End If
If n = 11 Then
'Case Is = 11
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9
b10 = b
End If
If n = 12 Then
'Case Is = 12
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10
b11 = b
End If
If n = 13 Then
'Case Is = 13
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10 Or b = b11
b12 = b
End If
If n = 14 Then
'Case Is = 14
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10 Or b = b11 Or b = b12
b13 = b
End If
If n = 15 Then
'Case Is = 15
Do
Randomize
b = Int(a * Rnd(a) + 1)
Loop While b = my1 Or b = b1 Or b = b2 Or b = b3 Or b = b4 Or b = b5 Or b = b6 Or b = b7 Or b = b8 Or b = b9 Or b = b10 Or b = b11 Or b = b12 Or b = b13
End If
Set rs = Nothing
rs.Open "select * from sht01_table where Trim(sht01_table.sht01_ID)='" & Trim(b) & "'", cn, 3, 3
select top 5 * from tb order by newid()随机取得5条数据
我写的是模拟考试软件,sql太不方便了. 真是谢谢你了!!!!!
Randomize
my1 = Int(15* Rnd(15) + 1)意见:
取当前系统时间的秒数做为随机因子,这样就差不多是真的随机了, 因为这个种子是变动的
要真的不重复的话就把产生的随机数存在数组里面,然后在重数组里把重复的去掉就可以了例:
dim temparr()as integer
dim tempstr as string
For i = 1 To 100
Randomize
tempstr =tempstr &"," & CInt(Rnd * (iCol.count - 1)) + 1
Next
temparr=splite(tempstr ,",")然后去掉重复的就可以了