【问题标题】:VB6 Randomize function?VB6随机函数?
【发布时间】:2011-07-07 18:08:58
【问题描述】:

我正在处理一些(混乱)遗留代码,我在Form_Load 中遇到了这个sn-p:

[other code]

Dim r As Byte
Dim g As Byte
Dim b As Byte
Randomize

[more code]

我对 VB 的许多部分还比较陌生,所以请原谅我的无知,如果它是明目张胆的打你的脸,但谁能告诉我这里发生了什么?我对变量声明很好,这些是有道理的。但是“随机化”只是在那里闲逛吗?这应该是VB的随机函数吗?如果是这样,它实际上并没有任何事情,是吗?我最初认为它正在调用原始设计师编写的函数/子,但不存在类似的东西。程序没有错误(尽管有数百行无用的行),如果我将“随机化”注释掉,似乎什么都没有改变。

【问题讨论】:

    标签: random vb6 legacy-code


    【解决方案1】:

    Randomize 使用当前系统时间播种随机数生成器(如果您习惯于 C 或 C++,则对应于 srand(time(NULL)))。与任何其他语言一样,随机生成器通常应该只播种一次(在应用程序启动时),但一个常见的错误是将其播种在一些重复调用的方法中,所以如果是这种情况,我不会感到惊讶.

    但请注意,如果不调用任何Randomize,则每次程序启动时都会生成相同的随机数序列。

    【讨论】:

    • 请注意,也有例外,有时最好在程序中多次播种随机数生成器。
    • @WTP: 是的,但是你通常会自己提供种子以达到某种特定的效果。用系统时间重新播种几乎没有意义。
    • 这完全有道理,谢谢。我认为由于各种开发人员的工作,它已经远离了它可以在代码中产生任何空间感的地方,但我看到它稍后会在哪里使用。非常感谢。
    • @erekalper:“远离了可以产生任何空间感的地方”- 一个非常熟悉的现象的出色表述;-)
    • @Aasmund:试图变得精致/文明会带来用于描述问题的语言中的“最佳”。再次感谢!
    【解决方案2】:

    随机化随机数生成器的种子。如果函数“Rnd”(生成随机数)出现在代码的其他地方,那么 Randomize 很可能不是没用的。

    【讨论】:

      【解决方案3】:

      Randomize [optional seed] seeds 用于所有后续调用 Rnd 的随机数生成器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-27
        • 1970-01-01
        • 2013-01-28
        • 2016-07-23
        • 1970-01-01
        相关资源
        最近更新 更多