|
发表于 2016-6-3 16:00
|
显示全部楼层
本楼为最佳答案
- Sub tt()
- 1:
- arr = Range("b2:b" & [b65536].End(3).Row)
- ReDim crr(1 To UBound(arr), 1 To 1)
- n = UBound(arr) '生成第一个随机数
- p = Int(Rnd * n + 1)
- crr(1, 1) = arr(p, 1)
- arr(p, 1) = arr(n, 1)
- n = n - 1
- For i = 2 To UBound(arr)
- s = 0
- 100:
- s = s + 1
- p = Int(Rnd * n + 1)
- x = arr(p, 1)
- If Abs(crr(i - 1, 1) - x) <= 7 Then '不符合条件,重新生成随机数。如果生成次数超过上限,重新运行本程序。
- If s < 5 * n Then GoTo 100 Else GoTo 1
- Else
- crr(i, 1) = x
- arr(p, 1) = arr(n, 1)
- n = n - 1
- End If
- Next
- [d2].Resize(UBound(arr)) = crr
- End Sub
复制代码 |
评分
-
查看全部评分
|