![]() |
![]() |
Lapp |
![]()
Сообщение
#1
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Допустим, мне нужно несколько самостоятельных параллельных линий, использующих случайные числа. Как известно, для отладки желательно не отрабатывать процедуру Randomize - тогда мы имеем повторяемость последовательности случайных чисел, выдаваемых функцией Random. "Сбить" такую последовательность можно, например, пропуском нескольких чисел. Вопрос же состоит в следующем: могу ли я (в отладочных целях или еще по какой причине) получить в одном процессе повторяемую последовательность, а в другом - нет?
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Редко захожу на форум, поэтому своевременно не видел эту тему.
В Паскале есть внутренняя переменная randseed, которая доступна извне. Достаточно в каждой "линии" завести по одной переменной для хранения текущего значения randseed, чтобы в каждой из них фактически оказывался независимый от других "линий" ГПСЧ. 1. Сохраняем значение randseed во временную переменную. 2. Помещаем в randseed значение из нашей дополнительной переменной для текущей линии. 3. Вызываем random. 4. Возвращаем в дополнительную переменную значение randseed. 5. Восстанавливаем значение randseed из временной переменной. Все. Для других вызовов random этот вызов прошел незамеченным. И, кроме того, в нем самом последовательность не зависит от вызовов из других мест. Сообщение отредактировано: andriano - 18.02.2011 7:23 |
![]() ![]() |
![]() |
Текстовая версия | 16.08.2025 18:32 |