excelvba。这个宏是否产生随机排列?
我现在依靠这个宏来生成随机序列,我只是想检查我得到的序列是否确实是随机的(好吧,很明显,计算机在随机情况下能做的最好) 很抱歉问了一个非常平淡的问题,但我需要在这个问题上保持冷静excelvba。这个宏是否产生随机排列?,excel,vba,Excel,Vba,我现在依靠这个宏来生成随机序列,我只是想检查我得到的序列是否确实是随机的(好吧,很明显,计算机在随机情况下能做的最好) 很抱歉问了一个非常平淡的问题,但我需要在这个问题上保持冷静 非常感谢在行的后面添加这一行 Randomize Timer 这将确保您再也不会得到相同的随机数,因为它使用计时器作为生成的随机数的种子 你的代码应该是 Sub Random() For x = 1 To Selection.Rows.Count Randomize Timer r = Int(Rnd(1
非常感谢在行的后面添加这一行
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
侧边查询-您选择的内容是什么?我看不出你是怎么做的?如果使用
Randomize
更改种子,速度是一个问题树,那么变量数组将比范围写入更快。尽管从xl-2010帮助Randomize使用计时器函数的返回值作为新的种子值。
正确。Randomize使用一个数字初始化Rnd函数随机数生成器,为其提供一个新的种子值。如果省略数字,系统计时器返回的值将用作新的种子值。如果未使用“随机化”,则Rnd函数(无参数)在第一次调用时使用与种子相同的数字,然后使用最后生成的数字作为种子值。
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