|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
我似乎是从zamyi的帖子中学来的。
这以后,因其简单高效而备受关注,在各种场合都可以方便引用。
首先,问题描述:
m个元素中,比如:1-10的自然数序列 ,要求随机抽取n个数并乱序返回。
假定m=10,n=3 用VBA实现时,最简单的代码如下:
- Sub test1()
-
- arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- m = UBound(arr)
-
- n = 3
- ReDim brr(1 To n)
-
- For i = 1 To n
- r = Int(Rnd() * m) + 1
- brr(i) = arr(r)
- Debug.Print i, brr(i)
- Next
- Debug.Print "--------------------"
-
- End Sub
复制代码
上面简单的代码,如果只是运行几次可能不会发现什么问题。
但是如果多运行几次,则你会发现,brr数组中,产生了重复数字。
这就是说,上述代码是有缺陷的,满足随机性,但无法满足不重复的要求。代码需要打补丁。
|
评分
-
6
查看全部评分
-
|