一段VBA源代码的意思

Subaa()Range("a1:a30")=""DimnumAsLong,arr(1To30)AsLong,arr2(1To30,0)AsLong,xAsLongt1=... Sub aa()
Range("a1:a30") = ""
Dim num As Long, arr(1 To 30) As Long, arr2(1 To 30, 0) As Long, x As Long
t1 = Timer
For x = 1 To 30
arr(x) = x
Next x
For x = 1 To 30
num = Int(Rnd() * (30 - x) + 1) '-----a语句
arr2(x, 0) = arr(num) '-----下面一句对arr数组重新排序,本句为赋值
arr(num) = arr(30 - x + 1)
Next x
Range("a1").Resize(30) = arr2
MsgBox "运行时间" & Format(Timer - t1, "0.000") & "秒"
End Sub
主要是循环那一段是什么意思。读不懂那一段是什么意思。
展开
 我来答
黄小涛101
2013-12-17 · TA获得超过207个赞
知道小有建树答主
回答量:523
采纳率:0%
帮助的人:335万
展开全部
Sub aa()
  Range("a1:a30") = ""
  Dim num As Long, arr(1 To 30) As Long, arr2(1 To 30, 0) As Long, x As Long
  t1 = Timer
  For x = 1 To 30
      arr(x) = x
  Next x
  For x = 1 To 30
      num = Int(Rnd() * (30 - x) + 1)  '在1-(31-x)之间随机取一个值如num=5
      arr2(x, 0) = arr(num)            '将这个随机值赋予数组arr2
      arr(num) = arr(30 - x + 1)        '将数组arr中的最大值赋给刚己取走的值num,用于缩小下一步num的取值范围,以达到num每次取值都不重复
  Next x
  Range("a1").Resize(30) = arr2
  MsgBox "运行时间" & Format(Timer - t1, "0.000") & "秒"
End Sub
staer001
2013-12-16 · 超过21用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:36.6万
展开全部
rnd()返回一个大于等于0且小于1的一个随机小数。用INT()取整后赋值给变量num。然后数组arr2以此为取数组arr的第NUM个值。arr(num)=arr(30-x+1) 即arr(num)的值为arr原数组的第30-X+1的值。以此来实现乱序重新排列。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式