VB 不重复的随机数

怎么样才能让6个文本框中的随机数不重Text1.Text = Int(33 * Rnd) + 1
Text2.Text = Int(33 * Rnd) + 1
Text3.Text = Int(33 * Rnd) + 1
Text4.Text = Int(33 * Rnd) + 1
Text5.Text = Int(33 * Rnd) + 1
Text6.Text = Int(33 * Rnd) + 1
Text7.Text = Int(16 * Rnd) + 1 可是这样总是有重复的数,我想不让6个文本框的数重复怎么办

用数组的..放进去33个.随机1个后,放到最大数组元素中,然后在32个中继续随机..如此循环,得到不重复的6个数,分别放到Text2-text7中:

Dim s(1 To 33), i%, j, m%

For i = 1 To 33
s(i) = i
Next

Randomize

For i = 1 To 6
m = Int(Rnd * (33 - i) + 1)
j = s(34 - i)
s(34 - i) = s(m)
s(m) = j
Next

Text2 = s(33)
Text3 = s(32)
Text4 = s(31)
Text5 = s(30)
Text6 = s(29)
Text7 = s(28)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-27
教你个最简单的方法,利用Rnd(num)中的num,每次改变num,那么我们的种子变化大的话,几乎不会出现重复

我写一个简答的,你试下就知道了
Sub a()
Dim a
a = 0.33
For i = 1 To 10
Cells(i, 2) = Int(Rnd(a) * 33) + 1
a = (Cells(i, 2) + 10) / (100 * i)
Next
End Sub

希望我的回答对你有所帮助
第2个回答  2007-10-08
Randomize
Text2.Text = Int(33 * Rnd) + 1
Text3.Text = Int(33 * Rnd) + 1
Text4.Text = Int(33 * Rnd) + 1
Text5.Text = Int(33 * Rnd) + 1
Text6.Text = Int(33 * Rnd) + 1
Text7.Text = Int(16 * Rnd) + 1
第3个回答  2007-10-08
Dim A(5) as Integer
Dim i as Integer,j as Integer
Randomize
for i=0 to 5
Mark:
A(i)=Int(33 * Rnd) + 1
for j=0 to i-1
if i>0 Then
if A(i)=A(j) Then Goto Mark
end if
next j
next i
Text2.Text = A(0)
Text3.Text = A(1)
Text4.Text = A(2)
Text5.Text = A(3)
Text6.Text = A(4)
Text7.Text = A(5)

上楼的方法笨的一比
第4个回答  2007-10-08
取出每个文本的值一对多循环比较。如果重复,就让他重新再随机一次,再比较;直到比较结果没有相同的,才进行后面的程序,这样不就行了吗?
第5个回答  2007-10-08
双重循环,相等回溯
相似回答