Страница: 1 |
Страница: 1 |
Вопрос: Работа Rnd
Добавлено: 12.06.12 19:22
Автор вопроса: merr
Товарисчи! Еще один детский вопрос.
Подскажите пожалуйста, такую штуку: если в программе используется несколько Rnd-генераторов, а "Randomize" (без значения - ссылка на системный таймер)ставить только в одной из процедур, то оно не будет "видно" в другой? А если в одной процедуре несколько Rnd, то на все ли оно будет действовать?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #1
Добавлено: 12.06.12 19:38
будет
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 12.06.12 22:53
вызывай Randomize однократно при запуске программы.
Номер ответа: 3
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #3
Добавлено: 13.06.12 01:18
Ок, спасибо.
Видимо, генератор в VB6 уж не очень "случайный"... Понимаю, он псевдо, но уж слишком характерные повторяющиеся узоры из пикселей рисует - вроде такого http://www.random.org/analysis/
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 13.06.12 01:52
да вполне нормальный там генератор.
Учти, что Randomize инициализирует генератор значением таймера. И если это делать часто, возникнет ситуация, когда между Randomize'ами значение таймера не успело поменяться, вот тогда-то и будут генерироваться повторяющиеся последовательности.
Делаешь Randomize при запуске программы, этого должно быть достаточно.
Номер ответа: 5
Автор ответа:
Cramper
Вопросов: 15
Ответов: 93
Профиль | | #5
Добавлено: 13.06.12 15:09
Интрересно бы знать какова функция распеределения этой функции? Скорее всего норамальное.
Номер ответа: 6
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #6
Добавлено: 13.06.12 23:22
Ок, но в том то и прикол что в разное время (я специально до секунд не измерял) он выдавал картинки, где есть "характерные" элементы. Да, они никогда в точности не повторяются, но в целом похожи...Ладно, может я занудствую, а генератор отличный
По идее, у Rnd-генератора должно быть равномерное распределение, т.е. не как у нормального - повышение частоты значений близких к среднему ("горка" нормального распределения), а просто ровная линия.
Кстати, как часто меняется значение Rnd? Он учитывает время до миллисекунд - т.е. 1000 р/сек, то бишь, 1 кГц?
Номер ответа: 7
Автор ответа:
Cramper
Вопросов: 15
Ответов: 93
Профиль | | #7
Добавлено: 15.06.12 08:13
Да конечно, должно быть равномерное! Для рисования картинок, наверное сгодится. Но вот если речь пойдет оболее тонких вычислительных экспериментах, то скорее всего лучше написать свой генератор, так будет надежнее.
Номер ответа: 8
Автор ответа:
Mikle
Вопросов: 5
Ответов: 134
Профиль | | #8
Добавлено: 16.06.12 10:19
Занимаюсь генерацией текстур. Алгоритм близок к шуму Перлина. Обратил внимание, что на текстурах просматривается не запланированный узор. Долго искал причину в алгоритме, а нашел в бейсиковской RND().
Это меня подвигло к разработке более "случайной" ф-ции. Вот результат:
Rand - вместо RND.
RandInit - вместо RANDOMIZE.
Распределении гораздо ровнее, чем у RND и в Native Code работает в 3-4 раза быстрее.
Простой тест:
Задайте ширину 256. Кликайте по форме и смотрите результат.
Номер ответа: 9
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #9
Добавлено: 16.06.12 13:31
Mikle, Спасибо!
Просветился про шум Перлина. Интересная штука. У меня другая система - клеточный автомат, для которого нужно инициализировать случайное начальное состояние. Буду экспериментировать...
Номер ответа: 10
Автор ответа:
merr
Вопросов: 11
Ответов: 31
Профиль | | #10
Добавлено: 02.07.12 00:00
Допер в чем была загогулина! Rnd в цикле. Шляпа