使用VBA中的Array函数生成不重复的随机数
随机数在计算机编程中有着广泛的应用,而生成不重复的随机数又是一个常见的需求。之前我们介绍了使用VBA程序在Excel表格中生成不重复的数字的方法,现在我们将分享如何利用Array数组函数来实现这一目的。
打开VBA编辑器并插入模块
首先,在电脑上打开Excel表格,然后使用【Alt F11】组合键打开VBA编辑器。在VBA编辑器的菜单栏上点击【插入】、【模块】,在模块代码框中输入相应的VBA程序代码,然后按下【F5】键来运行程序。
```vba
Sub ArrayUse()
Dim i, j, k, x1, x2, x4, x5, str, str2, MyValue, MyArray(5)
On Error Resume Next '忽略可能出现的错误
MyValue InputBox("请输入生成数组数量", "生成数组提示", 1) '生成数组数量输入框
If MyValue > 1 Then
For x4 0 To (Int(MyValue) - 1) '执行Int(MyValue)次循环
j 0 '初始化j为0
x2 0 '初始化x2为0
str "" '初始化str为空白
For x5 0 To 5
MyArray(x5) "" '数组的每个数初始化为空白
Next
Do
x1 0 'x1初始化为0
k Int(Rnd() * 33 1) '生成1-33的随机数
For i 0 To 5
If MyArray(i) <> k Then
x1 x1 1 '不相等的次数增加1
End If
Next
If x1 6 Then '如果数组里的数与随机数都不相等
MyArray(x2) k '把随机数写入数组
If str <> "" Then
str str ", " k '把随机数k拼接到str中
End If
If str "" Then
str k '把随机数k赋给str
End If
x2 x2 1 '数组写入一个数,x2增加1
End If
j j 1 '每执行一次Do循环,j增加1
If j > 200000 Or x2 6 Then '如果超过200000次或数组写入6个数
If str2 <> "" Then
str2 str2 Chr(10) Chr(13) str '换行回车
End If
If str2 "" Then
str2 str '把str赋给str2
End If
Exit Do
End If
Loop
Next
MsgBox str2 '弹出生成的数组窗口
End If
End Sub
```
输入数量生成随机数组
通过以上程序,我们可以输入要生成的随机数组的数量,然后点击【确定】按钮即可生成包含不重复随机数的数组。
程序函数及代码释义
1. MyArray(5)数组包含6个数,从第0个开始到第5个结束;Array前缀可以根据个人喜好更改。
2. 在给数组赋值时,应与数组中的位置对应,例如MyArray(1)10将10赋给数组的第2位,位置可以是变量。
3. 在重复使用中间变量之前需要初始化,以避免后续数据生成错误。
4. Int为取整函数,Rnd为生成大于等于0且小于1的随机数,Chr(10)为换行符,Chr(13)为回车符。
5. 程序逐一比较生成的随机数与数组中的数(如:If MyArray(i) <> k Then),当不相等时中间变量x1会自动加1,满足条件时将随机数赋给数组,无需使用COUNTIF函数判断。
6. 程序顺序执行,因此(If str <> "" Then…End If)和(If str "" Then…End If)的顺序不能颠倒,否则会出错。
通过以上方法,我们可以利用VBA中的Array函数生成不重复的随机数,为计算机编程提供更多可能性和灵活性。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。