VB6 Функция случайного выбора?

Я работаю над некоторым (беспорядочным) устаревшим кодом, и я наткнулся на этот фрагмент в Form_Load:

[other code]

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

[more code]

Я все еще относительно новичок во многих частях VB, поэтому, пожалуйста, извините за мое невежество, если оно вопиющее и бьет вас по лицу, но может ли кто-нибудь сказать мне, что здесь происходит? Меня устраивают объявления переменных, они имеют смысл. Но что же «Randomize» просто тусует? Это должна быть функция рандомизации VB? Если да, то на самом деле он здесь ничего не делает, не так ли? Сначала я думал, что это вызывает функцию / подпрограмму, написанную исходным дизайнером (ами), но ничего подобного не существует. В программе нет ошибок (хотя есть сотни бесполезных строк), и если я закомментирую "Randomize", ничего не изменится вообще.


person erekalper    schedule 07.07.2011    source источник


Ответы (3)


Randomize засевает генератор случайных чисел текущее системное время (соответствует srand(time(NULL)), если вы привыкли к C или C ++). Как и в любом другом языке, генератор случайных чисел обычно должен быть засеян только один раз (при запуске приложения), но распространенная ошибка - засеять его внутри некоторого метода, который вызывается повторно, поэтому я не удивлюсь, если это так. .

Однако обратите внимание, что без вызова Randomize та же последовательность случайных чисел будет генерироваться каждый раз при запуске программы.

person Aasmund Eldhuset    schedule 07.07.2011
comment
Обратите внимание, что бывают исключения, иногда полезно засеять генератор случайных чисел более одного раза в программе. - person ; 07.07.2011
comment
@WTP: Верно, но тогда вы обычно сами добавляете семя, чтобы добиться определенного эффекта. Перезагружать системное время почти бессмысленно. - person Aasmund Eldhuset; 07.07.2011
comment
В этом есть смысл, спасибо. Я думаю, что из-за того, что над этим работали различные разработчики, он отошел от того места, где он мог бы иметь какой-либо пространственный смысл в коде, но я вижу, где он используется позже. Очень признателен. - person erekalper; 08.07.2011
comment
@erekalper: Отодвинули от того места, где это имело бы какой-либо пространственный смысл - отличная формулировка очень знакомого феномена ;-) - person Aasmund Eldhuset; 08.07.2011
comment
@Aasmund: Попытка быть деликатной / вежливой выявляет лучшее в языке, который используется для описания проблем. Спасибо еще раз! - person erekalper; 08.07.2011

Произведите рандомизацию семян с помощью генератора случайных чисел. Если функция «Rnd» (генерирующая случайное число) появляется где-то еще в коде, случайный выбор, скорее всего, не бесполезен.

person Peter O.    schedule 07.07.2011

Randomize [optional seed] начальные числа генератора случайных чисел для всех последующих вызовов Rnd.

person Alex K.    schedule 07.07.2011