【问题标题】:Repeating two random number sequences VBA重复两个随机数序列VBA
【发布时间】:2014-07-31 03:24:57
【问题描述】:

我在 VBA 中有一个模块,它调用一个类函数四次。我需要随机数流来重复为第三和第四类的前两个类生成的一组数字。因此,在第一次和第三次调用之前,我放置了以下代码:

Rnd -1
Randomize (RandomSeed)

在哪里

RandomSeed

在这种情况下设置为 3。

在每个类函数中都有几个函数使用随机数来更新工作簿中某些单元格中的值。

也有多种用途
Rnd 

类内的核心模块中的函数。没有计算或出现

Rnd

函数发生在第一个随机化点之前。

这似乎不起作用,我有以下问题:

1)当我打开 excel 时,我运行代码并且两个流不同,然后我再次运行代码,现在它们是相同的,此后运行的任何代码都会产生相同的流(根据需要)。有没有人对为什么这可能不适用于第一次代码运行有任何建议? 2) 每次我打开 excel 时,代码都会产生不同的数字(即使在第一次运行之后)。

谁能说明为什么这不起作用?我在某处读到您不应使用多个随机化点,但这似乎不会导致我概述的问题。任何一般性建议都会非常有帮助。很抱歉没有发布代码,但代码量很大,其中大部分与问题无关。

【问题讨论】:

标签: vba excel random numbers


【解决方案1】:

Point#1,很可能 Rnd -1Randomize 在您第一次调用之前没有正确执行,但在您第三次调用之前正确执行。我建议您检查 RandomSeed 是否已使用调试器正确初始化。

如果您的代码一切正常,您能否运行第一次调用 2x 以解决问题(可能是 VBA 错误...)。

Point#2,很可能 Rnd 在启动 excel 时使用时间戳以提高“随机性”。如果是这种情况,您不能期望在关闭 Excel 后获得相同的流。如果您想在每次启动时都有完全相同的流,请生成一个随机表并将其保存在电子表格中的某个位置。

正如 cmets 中所提到的,拥有代码的详细信息将有助于获得更好的答案(只需粘贴您调用 RndRandomize 的行,不要' t粘贴整个代码)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多