Excel VBA Rnd并非实际随机

Hum*_*ble 6 excel vba excel-vba

我目前有一个宏,当我点击一个按钮,它"随机"给我一个msgbox中的数字:

dim number as double
number= Int(8 * Rnd + 1) - 1
MsgBox number
Run Code Online (Sandbox Code Playgroud)

问题是,这些数字实际上并不是随机的.例如:如果我启动宏,单击按钮两次,让我说我得到数字5和2.现在如果我关闭宏并再次打开它并单击按钮两次,我得到相同的两个数字5和2.

现在我知道在VB.net中有一种方法可以实际让它每次吐出随机数而不重复"序列"但是自从我触及vb.net以来已经多年了所以我不记得了,我也会不知道如何在excel vba中使用它.

rue*_*edi 18

您需要初始化随机数函数

Sub test()
Dim number As Double
Randomize
number = Int(8 * Rnd + 1) - 1
MsgBox number
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 这太不直观了!不是 Rnd.Randomize() 或 Rnd.Init()?不 - 一个孤立的 Randomize 函数!布莱赫!(当然,它有效 - 谢谢!) (2认同)