3

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

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

很抱歉这个非常行人的问题,但我需要对此保持平静。

非常感谢

4

1 回答 1

4

在该行之后添加此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
于 2012-11-05T08:25:22.797 回答