Страница: 1 | 2 | 3 | 4 |
Вопрос: Random
Добавлено: 06.07.05 19:32
Автор вопроса: Gerinych | Web-сайт:
Ответы
Всего ответов: 51
Номер ответа: 16
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #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 ... я ориентировался исключительно на его слова.
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-сайт:
Профиль | | #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-сайт:
Профиль | | #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-сайт:
Профиль | | #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-сайт:
Профиль | | #26
Добавлено: 09.07.05 20:59
То, что использование функции Randomize "уменьшает" возможность получения повторяющихся значений я никогда не отрицал.
Ты явно не понял что делаяет инструкция Randomize Timer, да и RND похоже тоже (хотя сам мне ссылку кидал).
Цепочка случайных чисел строится на основе какого то базового числа, вот Randomize и устанавливает это число.
при каждом новом запуске приложения, не инициализирующего генератор случайных чисел, функция Rnd выдает одну и ту же последовательность случайных чисел, а не одно и то же число
Именно это я и хотел сказать. Описался, с кем не бывает. Но это легко проверить, что похоже Sharp и сделал.
PS: Чтобы опять не было путаницы уточню что для VBA это скорее всего не актуально, только для VB6.
Номер ответа: 27
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #27
Добавлено: 09.07.05 21:31
Смысл проверять очевидное?
Обычно псевдослучайные числа генерятся рекуррентно, когда каждое следующее равно остатку от деления на какое-то число полинома от предыдущего члена ряда. Разумеется, если начальное число одно, то и последовательность будет одной и той же.
Номер ответа: 28
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #30
Добавлено: 10.07.05 02:53
Э, а ты уверен что до конца понимаешь смысл этого слова?
Что такое макрофункция и чем она отличается от обычной?
Ишь ты как Наболело?
Слушай, экспериментатор, ну при чём здесь Москва? Я ж про Гондурас. Он вообще в другом полушарии находится
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