vb随机产生7个数,然后这7个数不相同(范围要在1-36)。

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:17:48
Private Sub Command1_Click()
Randomize
Text1.Text = Int(36 * Rnd + 1)
Text2.Text = Int(36 * Rnd + 1)
Text3.Text = Int(36 * Rnd + 1)
Text4.Text = Int(36 * Rnd + 1)
Text5.Text = Int(36 * Rnd + 1)
Text6.Text = Int(36 * Rnd + 1)
Text7.Text = Int(36 * Rnd + 1)
End Sub
这样随机出来有时候几个文本都是同一个数。
例如显示: 20 20 33 35 11 27 33这样
还有就是怎么让随机出来的1~9显示成01~09。

Private Sub Command1_Click()
Dim a(6) As Integer, i As Integer, j As Integer
For i = 0 To 6
Randomize
a(i) = Int(Rnd * 36 + 1)
For j = 0 To i - 1
If a(j) = a(i) Then
i = i - 1
Exit For
End If
Next j
Next i
For i = 0 To 6
Controls("text" + CStr(i + 1)).Text = Format(a(i), "00")
Next i
End Sub

输出一个数字后存入数组,然后第二个数字时去判断是否存在再输出,1-9的话判断下字符串长度,如果是1位那就补0

注意下一句话:
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。
如果你要保证下一次生成的随机数和上一次的不一样,在每一次调用Rnd前调用一次Randomize。如果你不放心,可以用一个长为7的数组,如果发现新生成的随机数和前面的有一样的,就重新生成一个。这个不难。

Private Sub Command1_Click()
Dim s As String, i As Integer, j As Integer
Randomize
For i = 1 To 6
j = Int(36 * Rnd + 1)
If Val(j) < 10 Then
s = s + "0" & j & " "

Else
s = s & j & " "
End If
Next
MsgBox s
s