IPB
ЛогинПароль:

> псевдослучайныЕ последовательностИ, мечта о нескольких Randomize
Lapp
сообщение 12.11.2010 1:05
Сообщение #1


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Допустим, мне нужно несколько самостоятельных параллельных линий, использующих случайные числа. Как известно, для отладки желательно не отрабатывать процедуру Randomize - тогда мы имеем повторяемость последовательности случайных чисел, выдаваемых функцией Random. "Сбить" такую последовательность можно, например, пропуском нескольких чисел. Вопрос же состоит в следующем: могу ли я (в отладочных целях или еще по какой причине) получить в одном процессе повторяемую последовательность, а в другом - нет?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
andriano
сообщение 17.02.2011 22:43
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Редко захожу на форум, поэтому своевременно не видел эту тему.

В Паскале есть внутренняя переменная randseed, которая доступна извне.
Достаточно в каждой "линии" завести по одной переменной для хранения текущего значения randseed, чтобы в каждой из них фактически оказывался независимый от других "линий" ГПСЧ.

1. Сохраняем значение randseed во временную переменную.
2. Помещаем в randseed значение из нашей дополнительной переменной для текущей линии.
3. Вызываем random.
4. Возвращаем в дополнительную переменную значение randseed.
5. Восстанавливаем значение randseed из временной переменной.

Все. Для других вызовов random этот вызов прошел незамеченным. И, кроме того, в нем самом последовательность не зависит от вызовов из других мест.

Сообщение отредактировано: andriano - 18.02.2011 7:23
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 16.08.2025 18:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"