Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Random Добавлено: 06.07.05 19:32  

Автор вопроса:  Gerinych | Web-сайт: gerinych.tk | ICQ: 224-500-308 

Ответить

  Ответы Всего ответов: 51  

Номер ответа: 16
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #16
Добавлено: 09.07.05 02:28
КАК ТАК???!!! у меня похожий ряд, но уж точно не 33333

Ответить

Номер ответа: 17
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #17 Добавлено: 09.07.05 02:49
Morpheus, Подобный вопрос всё-таки нужно адресовать CyRax, так как приводя в пример различие между теми результами, что получил я 0, 7, 2, 2, 9 ... и теми, что получил CyRax 3, 3, 3, 3, 3 ... я ориентировался исключительно на его слова.
Как показала проверка (8) приложения без инструкции Randomize генерируют всегда одинаковые случайные числа.

P.S. Хотя число 3, конечно только лишь пример.

Ответить

Номер ответа: 18
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #18 Добавлено: 09.07.05 03:29
ActiveX
Думаю, что CyRax несколько раз запускал прогу, и первое случайное число при каждом запуске было 3. А не так, что при одном запуске проги несколько подряд вызовов rnd давали результат 3.

Ответить

Номер ответа: 19
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #19 Добавлено: 09.07.05 03:54
Возможно и так, но честно говоря я сильно сомневаюсь, что CyRax запускал "генератор" случайных чисел 100 раз. А ведь именно это количество повторений я предлагал использовать в экспериментах, естественно исключительно для чистоты оных.
Со своей стороны могу заметить, что мне сгенерировать более двух раз одно и тоже число подряд мне не удавалось, причём только в цикле.

Ответить

Номер ответа: 20
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #20
Добавлено: 09.07.05 04:36
CyRax имел ввиду, что при каждом новом запуске приложения, не инициализирующего генератор случайных чисел, функция Rnd выдает одну и ту же последовательность случайных чисел, а не одно и то же число

Ответить

Номер ответа: 21
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #21 Добавлено: 09.07.05 05:18
Sharp, Такое толкование его слов я также рассматривал, но пришёл к выводу, что в таком случае его утверждение, что использование Randomize обязательно, не имеет под собой оснований.
!!! Обратите внимание на тот факт, что наш спор касается именно обязательности использования инструкции Randomize, а получение одной и той же последовательности случайных чисел ни коим образом не опровергает моего утверждения, что в принципе можно обойтись и без Randomize !!!

Ответить

Номер ответа: 22
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #22
Добавлено: 09.07.05 06:35
В принципе, бесспорно, можно обойтись и без Randomize, иначе компилятор выдавал бы ошибку на Rnd без Randomize, тем не менее, использовать его крайне рекомендуется.

Ответить

Номер ответа: 23
Автор ответа:
 Aндрей



ICQ: 259020622 

Вопросов: 30
Ответов: 71
 Профиль | | #23 Добавлено: 09.07.05 11:00
 Функция rnd для генерации чисел используют одно и тоже начальное множество, полученый так числа пройдут тесты на случайность, но реально не будут случайными т.к множество всегда одно и тоже ->неслуч.
Случайное-это то что при неком комлексе условий возр непредсказуемый результат.


ГСЧ - имеет важное значение в области защиты данных(ключи). К примеру PGPdisk при генерации сл. чисел, просит вас представить множество в виде координат мыши.
RND это не выход.

Ответить

Номер ответа: 24
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #24
Добавлено: 09.07.05 15:58
WebMoney Keeper тоже просит :)
На rsdn.ru есть проект Entropy, авторы которого пытаются написать генератор случайных чисел.

Ответить

Номер ответа: 25
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #25 Добавлено: 09.07.05 18:05
Sharp, Предлагаю остановиться на тезисе, гласящем, что "бесспорно, можно обойтись и без Randomize ..." и закрыть тему, тем более, что она себя уже давно исчерпала.

Андрей, В вопросе, который и вызвал весь этот, по большому счёту бессмысленный спор, не идёт речи о генерации пароля к сверхсекретной правительственной информации, так что я бы предложил не драматизировать и не усложнять простые вещи.

Кстати, ребята обратите внимание на тот факт, что речь в первоначальном вопросе идёт о генерации одного случайного числа, а периодичность генерации остается за кадром, т.е. возможен вариант, что генерировать это самое случайное число нужно будет, например, один раз в год или один раз в жизни.

Ответить

Номер ответа: 26
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #26
Добавлено: 09.07.05 20:59

То, что использование функции Randomize "уменьшает" возможность получения повторяющихся значений я никогда не отрицал.

 Ты явно не понял что делаяет инструкция Randomize Timer, да и RND похоже тоже (хотя сам мне ссылку кидал).
 Цепочка случайных чисел строится на основе какого то базового числа, вот Randomize и устанавливает это число.


 при каждом новом запуске приложения, не инициализирующего генератор случайных чисел, функция Rnd выдает одну и ту же последовательность случайных чисел, а не одно и то же число

 Именно это я и хотел сказать. Описался, с кем не бывает. Но это легко проверить, что похоже Sharp и сделал.

PS: Чтобы опять не было путаницы уточню что для VBA это скорее всего не актуально, только для VB6.

Ответить

Номер ответа: 27
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #27
Добавлено: 09.07.05 21:31
Смысл проверять очевидное? :)
Обычно псевдослучайные числа генерятся рекуррентно, когда каждое следующее равно остатку от деления на какое-то число полинома от предыдущего члена ряда. Разумеется, если начальное число одно, то и последовательность будет одной и той же.

Ответить

Номер ответа: 28
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #28
Добавлено: 09.07.05 21:38
А ну ка, всезнайка, набросай мне алгоритм генерации случайных чисел. Я думаю всем будет полезно. Заодно и с VB-шным сравним.

Ответить

Номер ответа: 29
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #29 Добавлено: 10.07.05 01:28
CyRax, Я прекрасно знаю для чего в VBA используется макрофункция Rnd() равно как Randomize + Timer
Однако в отличии от Вас, я не являюсь сторонником теории, и мое утверждение строилось на проведенных мною экспериментах. А они показали (нравиться Вам это или нет), что при использовании Randomize количество повторяющихся числовых значений меньше. Под повторяющимся значением, понимается значение, которое будет равным предыдущему.
Несмотря на это я останусь при своём мнении, что для генерации случайного числа использовать инструкцию Randomize (без Timer, так как Timer используется по умолчанию) вовсе не обязательно.

СуRax, иногда бывает весьма полезно знать, для чего был задан тот или иной вопрос, поэтому я постараюсь объяснить на конкретном примере, а признаете ли Вы, что в этом случае я прав или Ваша уверенность в собственной непогрешимости не даст Вам это сделать, это даже и не важно.
Допустим, нам в течении дня надо создать документ Word (на основании шаблона) и сохранить, причём имя файла, должно содержать название компании + дата + случайное число. В этом случае случайное число (если хотите, то можете назвать это число - псевдослучайным) используется для получения уникального имени. И в этом случае, использование Randomize не носит обязательного характера, так как мой первоначальный вариант прекрасно справится с поставленной задачей.

Ответить

Номер ответа: 30
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #30
Добавлено: 10.07.05 02:53
Я прекрасно знаю для чего в VBA используется макрофункция Rnd()

 Э, а ты уверен что до конца понимаешь смысл этого слова?
 Что такое макрофункция и чем она отличается от обычной?

Однако в отличии от Вас, я не являюсь сторонником теории, и мое утверждение строилось на проведенных мною экспериментах.

 Ишь ты как :) Наболело?

что при использовании Randomize количество повторяющихся числовых значений меньше.

 Слушай, экспериментатор, ну при чём здесь Москва? Я ж про Гондурас. Он вообще в другом полушарии находится ;)
 Randomize никак не влияет на количество повторяющихся числовых значений. Оно задаёт стартовое число в цепочке псевдослучайных чисел. См что Sharp написал в 27 (если он не врёт конечно).

Под повторяющимся значением, понимается значение, которое будет равным предыдущему.

 О как просветил :) А мы тупые сами бы не догадались.

а признаете ли Вы, что в этом случае я прав или Ваша уверенность в собственной непогрешимости не даст Вам это сделать, это даже и не важно.

 Гы-гы-гы :) Ага, да, сейчас, всё брошу, разбегусь и пойду во всём сознаваться :)

В этом случае случайное число (если хотите, то можете назвать это число - псевдослучайным)

 Ага, я и MSDN:
An initial value used to generate pseudorandom numbers. For example, the Randomize statement creates a seed number used by the Rnd function to create unique pseudorandom number sequences

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам