我在VBA中有一个模块,它调用类函数四次。我需要随机数流来重复为第三和第四类的前两个类生成的数字集。因此,在第一次和第三次调用之前,我已经放置了以下代码:
Rnd -1
Randomize (RandomSeed)
其中
RandomSeed
在这种情况下,设置为3。
在每个类函数中,有几个函数使用随机数来更新工作簿中某些单元格中的值。
也有几种用途Rnd
在类中的核心模块中运行。
没有计算或出现Rnd
功能发生在第一个随机化点之前。
这似乎不起作用,我有以下问题:
1)当我打开excel时,我运行代码并且两个流是不同的,然后我再次运行代码,现在它们是相同的,之后运行的任何代码生成相同的流(根据需要)。有没有人有任何建议,为什么这可能不适用于第一个代码运行? 2)每次打开excel时,代码都会产生不同的数字(即使在第一次运行之后)。
任何人都可以建议为什么这不起作用?我在某处读过你不应该使用多个随机点,但这似乎并没有引起我所概述的问题。任何一般性建议都会非常有用。抱歉没有发布代码,但是数量很大,其中大部分与问题无关。
答案 0 :(得分:0)
第1点,很可能 Rnd -1 或 Randomize 在第一次通话前没有正确执行,但在第三次通话前正确执行。我建议您检查 RandomSeed 是否已使用调试器正确初始化。
如果您的代码中的所有内容都显示为Ok,您是否可以运行第一次调用2x以解决问题(可能是VBA错误......)。
第2点,当启动excel时, Rnd 很可能会使用时间戳来改善“随机性”。如果是这种情况,您不能指望在关闭Excel后获得相同的流。如果您希望在每次启动时都拥有完全相同的流,请生成一个随机表并将其保存在电子表格中的某个位置。
正如评论中提到的那样,了解代码的详细信息有助于获得更好的答案(只需粘贴您调用 Rnd 和 Randomize 的行,不要' t粘贴整个代码)。