一个简单的办法Private Sub Command1_Click() Dim A(99) As Long Dim i As Long Dim temp As Long Dim R As Long '初始化赋值 For i = 1 To 3 A(i) = 100 A(i + 3) = 77 Next For i = 7 To 8 A(i) = 111 Next For i = 9 To 12 A(i) = 50 Next For i = 13 To 17 A(i) = 20 Next For i = 17 To 26 A(i) = 5 Next '随机化 Randomize For i = 0 To UBound(A) * 20 R = Fix(Rnd() * 100) temp = A(i Mod 20) A(i Mod 20) = A(R) A(R) = temp Next '输出 Cls For i = 0 To UBound(A) If Fix(i Mod 10) = 0 Then Print Print Tab(5 * (i Mod 10)); A(i); Next End Sub
随机化下面的的意思: Randomize For i = 0 To UBound(A) * 20 '交换次数为元素个数的20倍 R = Fix(Rnd() * 100) ’取100内的随机数 temp = A(i Mod 20) ‘把数组前20个数中的某个数的值 赋给变量temp A(i Mod 20) = A(R) '把随机元素的值赋给 20以前那个元素A(R) = temp ’把temp 的值(其实等于20以前的那个元素的原来的值)给随机元素,达到交换的目的 Next
Dim A(99) As Long
Dim i As Long
Dim temp As Long
Dim R As Long
'初始化赋值
For i = 1 To 3
A(i) = 100
A(i + 3) = 77
Next
For i = 7 To 8
A(i) = 111
Next
For i = 9 To 12
A(i) = 50
Next
For i = 13 To 17
A(i) = 20
Next
For i = 17 To 26
A(i) = 5
Next
'随机化
Randomize
For i = 0 To UBound(A) * 20
R = Fix(Rnd() * 100)
temp = A(i Mod 20)
A(i Mod 20) = A(R)
A(R) = temp
Next
'输出
Cls
For i = 0 To UBound(A)
If Fix(i Mod 10) = 0 Then Print
Print Tab(5 * (i Mod 10)); A(i);
Next
End Sub
Randomize
For i = 0 To UBound(A) * 20 '交换次数为元素个数的20倍
R = Fix(Rnd() * 100) ’取100内的随机数
temp = A(i Mod 20) ‘把数组前20个数中的某个数的值 赋给变量temp
A(i Mod 20) = A(R) '把随机元素的值赋给 20以前那个元素A(R) = temp ’把temp 的值(其实等于20以前的那个元素的原来的值)给随机元素,达到交换的目的
Next
1随机化下面的,包括输出的语句也看不懂
2还有要是我要输出的不是100个,而是随我规定输出的个数,怎么解??
1,输入语句只是测试用,看不懂不要紧。2,把Dim A(99) As Long改成Dim A(你要的个数) as long
1不过我想的是在窗口上写出要规定输出的个数?(不在代码中写)
好象要改Dim A(99) As Long
R = Fix(Rnd() * 100)
不太会改!