Могу ли я сохранить RandStream и загрузить его позже, чтобы продолжить симуляцию? - PullRequest
1 голос
/ 29 марта 2019

Мой вопрос заключается в том, можно ли RandStream в MATLAB сохранить в файл и загрузить позже, чтобы продолжить симуляцию, выбирая последовательность случайных чисел из ее последней точки.Все, что я могу найти, это то, что можно сохранить RandStream, например:

s1 = RandStream('mt19937ar','Seed',1); 
savedState = s1.State;

Ничего о сохранении потока в файл и загрузке его при другом запуске.

1 Ответ

2 голосов
/ 29 марта 2019

Вы можете сохранить состояние генератора случайных чисел в MAT-файл, используя функцию save. Функция load загрузит его обратно. Например:

> s1 = RandStream('mt19937ar','Seed',145);
> state = s1.State;
> s1.rand(1,4)
ans =
    0.2830    0.0020    0.5306    0.0804
> s1.State = state;
> s1.rand(1,4)
ans =
    0.2830    0.0020    0.5306    0.0804
> save MyRandState state

Теперь, после clear all или в новом сеансе MATLAB:

> load MyRandState
> s1 = RandStream('mt19937ar');
> s1.State = state;
> s1.rand(1,4)
ans =
    0.2830    0.0020    0.5306    0.0804

Однако даже проще сохранить весь объект генератора случайных чисел в MAT-файл:

> s1 = RandStream('mt19937ar','Seed',145);
> save MyRandState s1
> s1.rand(1,4)
ans =
    0.2830    0.0020    0.5306    0.0804
> clear all
> load MyRandState
> s1.rand(1,4)
ans =
    0.2830    0.0020    0.5306    0.0804
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...