Функция генератора случайных чисел ran2 Числовые рецепты - PullRequest
1 голос
/ 11 марта 2010

Учитывая, что мы начинаем вызов функции ran2 с отрицательным целым числом [семя], он будет производить серию случайных чисел. Последовательность может быть восстановлена ​​точно, если используется то же самое семя.

Теперь мой вопрос: есть ли способ, которым мы можем напрямую войти в какую-то точку последовательности и затем продолжить с этой точки и далее? Например, если случайные числа для определенного начального числа равны 0,35, 0,32, 0,44,0.32,0.66,0.32, 0,45.

Если мы знаем то семя, которое дало начало этой последовательности, есть ли способ заставить функцию вернуть 0,66 и затем продолжить с этой точки и далее?

Я хочу использовать его в симуляции. Таким образом, если мое моделирование заканчивается в определенной точке, и мне нужно перезапустить его, я должен продолжить с той же последовательностью случайных чисел. Спасибо.

1 Ответ

1 голос
/ 11 марта 2010

Я бы согласился с комментарием @ dirkgently выше. Хотя я не знаком с ran2 в частности, на основе этого примера кода похоже, что существует несколько фрагментов с сохранением состояния (idum, idum2, iy и iv) это может быть заключено в капсулу и сохранено. Когда вы «приостанавливаете» симуляцию, вы можете сохранить это состояние и записать его обратно в движок ran2 при следующем запуске. Восстановление информации о состоянии должно вернуть машину туда, где она остановилась, и случайная последовательность может возобновиться. Это может потребовать небольшой модификации самого кода ran2, но сложное изменение не должно быть сложным.

...