不难呀,只需要生成一个标志数组就行了Dim bFlag() As Boolean Dim iRecordCount As Long Dim iCount As Long Dim iRnd As Long Dim i As Long Dim rst As Recordset Set rst = cn.Excute("Select Count(*) From T1") iRecordCount = rst(0) If iRecordCount = 0 Then Exit Sub ReDim bFlag(iRecordCount - 1) For i = 0 To iRecordCount - 1 bFlag(i) = False Next i
Randomize
iCount = iRecordCount \ 3 Do While iCount > 0 iRnd = CInt(Rnd * iRecordCount) If Not bFlag(iRnd) Then bFlag(iRnd) = True iCount = iCount - 1 End If Loop Set rst = cn.Excute("Select * From T1") iCount = 0 Do While Not rst.Eof if bFlag(iCount) Then 对此行数据进行处理
iCount = iCount + 1 rst.MoveNext Loop
Dim con As New Connection Dim rs As Recordset Dim a() As String Dim i, j, k, x, y As Long Dim flag As Boolean flag = True Randomize con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False" con.Open Set rs = con.Execute("select * from a1") If Not rs.EOF And Not rs.BOF Then i = 1 rs.MoveFirst Do While Not rs.EOF '算出数据数量 i = i + 1 rs.MoveNext Loop End If k = i \ 3 + i Mod 3 ReDim a(k) y = 1 Do While Not y > k '开始取得随机数 j = CInt(Rnd(1) * i) For x = 1 To k '判断是否重复 If a(x) = j Then flag = False End If Next If flag Then a(y) = j y = y + 1 End If Loop Set rs = Nothing con.Close 你试试吧,有可能还要调试一下
Dim con As New Connection Dim rs As Recordset Dim a() As String Dim i, j, k, x, y As Long Dim flag As Boolean flag = True Randomize con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False" con.Open Set rs = con.Execute("select * from a1") If Not rs.EOF And Not rs.BOF Then i = 1 rs.MoveFirst Do While Not rs.EOF '算出数据数量 i = i + 1 rs.MoveNext Loop End If k = i \ 3 + i Mod 3 ReDim a(k) y = 1 Do While Not y > k '开始取得随机数 j = CInt(Rnd(1) * i) For x = 1 To k '判断是否重复 If a(x) = j Then flag = False End If Next If flag Then a(y) = j y = y + 1 End If Loop Set rs = Nothing con.Close 你试试吧,有可能还要调试一下
Dim con As New Connection Dim rs As Recordset Dim a() As String Dim i, j, k, x, y As Long Dim flag As Boolean flag = True Randomize con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False" con.Open Set rs = con.Execute("select * from a1") If Not rs.EOF And Not rs.BOF Then i = 1 rs.MoveFirst Do While Not rs.EOF '算出数据数量 i = i + 1 rs.MoveNext Loop End If k = i \ 3 + i Mod 3 ReDim a(k) y = 1 Do While Not y > k '开始取得随机数 j = CInt(Rnd(1) * i) For x = 1 To k '判断是否重复 If a(x) = j Then flag = False End If Next If flag Then a(y) = j y = y + 1 End If Loop Set rs = Nothing con.Close 你试试吧,有可能还要调试一下
[email protected]
随机数的产生只要用Rnd就行。
不过在用以前。要先用个Randomize。要不然永远是一样的数字。
注意要判断是否重复。
我不会写!!!我的油箱是[email protected] 标题请著名“函数”。谢谢你了
我就是不会生成啊!~~
Dim iRecordCount As Long
Dim iCount As Long
Dim iRnd As Long
Dim i As Long
Dim rst As Recordset Set rst = cn.Excute("Select Count(*) From T1")
iRecordCount = rst(0)
If iRecordCount = 0 Then Exit Sub ReDim bFlag(iRecordCount - 1)
For i = 0 To iRecordCount - 1
bFlag(i) = False
Next i
Randomize
iCount = iRecordCount \ 3
Do While iCount > 0
iRnd = CInt(Rnd * iRecordCount)
If Not bFlag(iRnd) Then
bFlag(iRnd) = True
iCount = iCount - 1
End If
Loop Set rst = cn.Excute("Select * From T1")
iCount = 0
Do While Not rst.Eof
if bFlag(iCount) Then 对此行数据进行处理
iCount = iCount + 1
rst.MoveNext
Loop
Dim rs As Recordset
Dim a() As String
Dim i, j, k, x, y As Long
Dim flag As Boolean
flag = True
Randomize
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False"
con.Open
Set rs = con.Execute("select * from a1")
If Not rs.EOF And Not rs.BOF Then
i = 1
rs.MoveFirst
Do While Not rs.EOF '算出数据数量
i = i + 1
rs.MoveNext
Loop
End If
k = i \ 3 + i Mod 3
ReDim a(k)
y = 1
Do While Not y > k '开始取得随机数
j = CInt(Rnd(1) * i)
For x = 1 To k '判断是否重复
If a(x) = j Then
flag = False
End If
Next
If flag Then
a(y) = j
y = y + 1
End If
Loop
Set rs = Nothing
con.Close
你试试吧,有可能还要调试一下
Dim rs As Recordset
Dim a() As String
Dim i, j, k, x, y As Long
Dim flag As Boolean
flag = True
Randomize
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False"
con.Open
Set rs = con.Execute("select * from a1")
If Not rs.EOF And Not rs.BOF Then
i = 1
rs.MoveFirst
Do While Not rs.EOF '算出数据数量
i = i + 1
rs.MoveNext
Loop
End If
k = i \ 3 + i Mod 3
ReDim a(k)
y = 1
Do While Not y > k '开始取得随机数
j = CInt(Rnd(1) * i)
For x = 1 To k '判断是否重复
If a(x) = j Then
flag = False
End If
Next
If flag Then
a(y) = j
y = y + 1
End If
Loop
Set rs = Nothing
con.Close
你试试吧,有可能还要调试一下
Dim rs As Recordset
Dim a() As String
Dim i, j, k, x, y As Long
Dim flag As Boolean
flag = True
Randomize
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Baolei\VB\RPTTRY\db1.mdb;Persist Security Info=False"
con.Open
Set rs = con.Execute("select * from a1")
If Not rs.EOF And Not rs.BOF Then
i = 1
rs.MoveFirst
Do While Not rs.EOF '算出数据数量
i = i + 1
rs.MoveNext
Loop
End If
k = i \ 3 + i Mod 3
ReDim a(k)
y = 1
Do While Not y > k '开始取得随机数
j = CInt(Rnd(1) * i)
For x = 1 To k '判断是否重复
If a(x) = j Then
flag = False
End If
Next
If flag Then
a(y) = j
y = y + 1
End If
Loop
Set rs = Nothing
con.Close
你试试吧,有可能还要调试一下
谢谢!~~能不能写一点注解,我有一点看不懂。
你的我看过了,如果是数字,一定可以,但我要调的是数据库里的记录。可能有点欠缺
你的程序不错!我好用的,但我要提出数据,语句该写在那里啊?