Excel VBA。这个宏是否会产生随机排列?

时间:2012-11-05 08:24:17

标签: excel vba

我现在依靠这个宏来生成随机序列,我只想检查我得到的序列是否确实是随机的(好吧,计算机可以随意做的最好)。

Sub Random()
For x = 1 To Selection.Rows.Count
   r = Int(Rnd(1) * (Selection.Rows.Count) + 1)
   For z = 1 To Selection.Columns.Count
       y = Selection.Cells(x, z).Formula
       Selection.Cells(x, z).Formula = Selection.Cells(r, z).Formula
       Selection.Cells(r, z).Formula = y
   Next z
Next x
End Sub

对于这个非常行人的问题感到抱歉,但我需要放心。

非常感谢

1 个答案:

答案 0 :(得分:3)

For

之后添加此行
Randomize Timer

这将确保您再也不会获得相同的随机数,因为它使用计时器作为生成数字的随机性的种子。

您的代码应为

Sub Random()
For x = 1 To Selection.Rows.Count
   Randomize Timer
   r = Int(Rnd(1) * (Selection.Rows.Count) + 1)
   For z = 1 To Selection.Columns.Count

       y = Selection.Cells(x, z).Formula
       Selection.Cells(x, z).Formula = Selection.Cells(r, z).Formula
       Selection.Cells(r, z).Formula = y
   Next z
Next x
End Sub