为什么我收到相同的结果当我运行一个模拟的Linux集群上使用兰德命令在MATLAB 7.13 (R2011b) ?

3视图(30天)
我是一个Linux集群上运行模拟。在我经常使用兰德命令但仿真模拟收益率相同的结果。我已经配置了兰德命令以下列方式:
重置(RandStream。getDefaultStream总和(100 *时钟))
然而,我仍经常得到相同的结果。

接受的答案

MathWorks支万博1manbetx持团队
为什么结果经常是相同的,因为不同的工作在不同的Linux集群的节点开始在同一时间。因此,种子由时钟随机数发生器算法是相同的。
有可能解决这个问题的方法是选择随机数生成器的种子,这样不仅取决于时钟,但这取决于另一个变量是不同的每一个MATLAB会话并行运行。
如果您正在使用并行计算工具箱(PCT)一个简单的解决方案可以如下:
s = RandStream (“name_of_algorithm”,“种子”总和(100 * (1 + labindex / numlabs) *时钟));
RandStream.setGlobalStream (s)
NUMLABS返回实验室的总数目前操作对当前的工作和LABINDEX返回实验室目前执行的指数函数。
如果你不使用PCT但你从一个脚本开始不同的MATLAB会话,一个简单的解决方案可以如下:
x =功能(“getpid”);
s = RandStream (“name_of_algorithm”,“种子”总和(x *时钟));
RandStream.setGlobalStream (s)
命令的功能(GETPID)返回一个不同的身份证号码为每个MATLAB会话运行。

更多的答案(0)

类别

找到更多的在集群和云帮助中心文件交换

标签

没有标签了。

s manbetx 845


释放

R2011b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!