试着做成了模块,方便以后用: 获取随机整数(最小值 As Integer, 最大值 As Integer, 随机数量 As Integer)
模块的内容如下:
Public 随机整数() As Long '数据输出,从 随机整数(1) 开始记录
Public 随机数量 As Long '可以去掉,但是在过程中要弄个常数变量来代替,比如:
'Dim A As Integer
'A = 获取随机整数(0, 100, 100)
'====================================================
Public Function 获取随机整数(最小值 As Long, 最大值 As Long, 随机数量 As Long)
Dim I As Long
Dim J As Long
Dim 范围 As Long
Dim 选中() As String
Dim 最小值为零 As String
ReDim Preserve 随机整数(1 To 1000) As Long
'====================================================
If 最小值 < 0 Then
MsgBox "嘿嘿,不支持负数 !"
Exit Function
End If
'====================================================
If 最小值 = 0 Then
最小值 = 最小值 + 1
最大值 = 最大值 + 1
最小值为零 = "是"
End If
'====================================================
If 最小值 > 最大值 Then
MsgBox "嘿嘿,最大值怎能比最小值还小 !"
Exit Function
End If
'====================================================
范围 = 最大值 - 最小值 + 1
If 范围 < 随机数量 Then
MsgBox "范围 = 最大值 - 最小值 + 1 = " & 范围 & " 获取随机整数的数量 " & 随机数量 & " 超出范围 !"
Exit Function
End If
'====================================================
If 随机数量 < 1 Then
MsgBox "嘿嘿,获取随机整数的 数量 至少要等于1 !"
Exit Function
End If
'====================================================
ReDim Preserve 选中(最小值 To 最大值) As String
ReDim Preserve 随机整数(1 To 随机数量) As Long
For I = 1 To 随机数量
随机整数(I) = 0
Next
'====================================================
Do
获取随机整数 = Fix(Rnd(1) * 最大值)
If 获取随机整数 >= 最小值 Then
If 获取随机整数 <= 最大值 Then
If 选中(获取随机整数) <> "是" Then
选中(获取随机整数) = "是"
J = J + 1
随机整数(J) = 获取随机整数
If 选中(最大值) = "是" Then 最大值 = 最大值 - 1
End If
End If
End If
If J < 随机数量 Then
获取随机整数 = Int(Rnd(1) * 范围) + 最小值
If 获取随机整数 >= 最小值 Then
If 获取随机整数 <= 最大值 Then
If 选中(获取随机整数) <> "是" Then
选中(获取随机整数) = "是"
J = J + 1
随机整数(J) = 获取随机整数
If 选中(范围) = "是" Then 范围 = 范围 - 1
End If
End If
End If
End If
Loop While J < 随机数量
'====================================================
If 最小值为零 = "是" Then
J = 0
Do
J = J + 1
随机整数(J) = 随机整数(J) - 1
Loop While J < 随机数量
End If
获取随机整数 = 随机数量
End Function
'=======================================调用方法===========================================
'=======================================调用方法===========================================
Private Sub Command1_Click()
随机数量 = 获取随机整数(1, 10, 10)
'获取随机整数(最小值 As Integer, 最大值 As Integer, 随机数量 As Integer)
List1.Clear
For I = 1 To 随机数量
List1.AddItem 随机整数(I) '要从 随机整数(1) 开始
Next
End Sub
[此贴子已经被作者于2007-5-13 9:41:38编辑过]