我可以保存一个RandStream并在以后加载它以继续模拟吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以保存一个RandStream并在以后加载它以继续模拟吗?相关的知识,希望对你有一定的参考价值。

我的问题是,是否可以将MATLAB中的RandStream保存到文件中并在以后加载以继续模拟从其最后一点获取随机数序列。我能找到的只是一个可以保存RandStream,例如:

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

没有关于将流保存到文件并在另一次运行中加载它的事情。

答案

您可以使用save函数将随机数生成器的状态保存到MAT文件中。 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

以上是关于我可以保存一个RandStream并在以后加载它以继续模拟吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何保存原始函数的地址并在以后调用它?

将图像加载到画布上并放大/缩小并移动它以适应并保存画布上的内容

一个按钮可以保存用户输入并在以后访问它?用java [关闭]

在 R 中保存和加载模型

用户如何保存表单并在以后访问它?

如何保存 numpy 数组以便以后可以适当地加载它们?