7,763
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
'Text1 保存的是中奖号码的范围 最大值
'Text2 保存的是要产生的中奖号码的个数
Private Data() As Long '用于保存随机生成的数据
Private mMax As Long '中奖号码的范围 最大值
Private mCount As Long '产生的中奖号码的个数
Private newCol As New Collection '生成一个容器,用于保存 中奖号码的范围 数据集合
Private Sub Command1_Click() '生成数据命令
mMax = Val(Text1.Text)
mCount = Val(Text2.Text)
' 判断数据的有效性
If mCount > mMax Then '产生的中奖号码的个数 不能大于 中奖号码的范围 最大值
Exit Sub
End If
If mCount < 1 Or mMax < 1 Then '产生的中奖号码的个数 与 中奖号码的范围 最大值 均不能小于 1
Exit Sub
End If
Dim i As Long
For i = 1 To mMax
newCol.Add i '将数据1 至 最大值 (即中奖号数据集合)放入容器中
Next
ReDim Data(1 To mCount) As Long '重新定义数组,用于保存数据
Dim newRnd As Long '保存产生的随机数。
'好处,只循环取得数据总数的次数。
For i = 0 To mCount - 1
newRnd = Rnd(1) * (mMax - i) + 1 '产生1至 mMax-i 之间的随机数 '因每产生一个数据,集合中就少一位,所以用 mMax-i
Data(i + 1) = newCol.Item(newRnd) '保存随机数(取得中奖号码集合中的数据)
newCol.Remove newRnd '此处,从中奖集合中删除此产生的数据' 避免重复产生数据.
Next
For i = 1 To mCount
MsgBox Data(i) '看一下数据
Next
End Sub