matlab全局流:生成的数字集之间有任何相关性吗?

问题描述 投票:0回答:1

我只是想在Matlab中创建随机数集以及它与“全局流”的关系方面有一些澄清。

我知道如果可以再次运行代码,可以为结果的可重复性设置全局流:

s = RandStream('mt19937ar','Seed',7);
RandStream.setGlobalStream(s);
A = rand(1,10);

每次运行此命令,A都是相同的。 例如,

s = RandStream('mt19937ar','Seed',7);
RandStream.setGlobalStream(s);
B = rand(1,10);

我应该发现isequal(A,B)是正确的。

现在我的问题涉及以下方面,

s = RandStream('mt19937ar','Seed',7);
RandStream.setGlobalStream(s);
A = rand(1,10);
B = rand(1,10);

如果运行此命令,则A和B是不同的数字集。 我可以将它们视为独立集合,还是它们之间存在某种关联? 如果我想确保A和B之间更强的独立性,是否应该在创建A之后但在创建B之前创建一个新的,不同的globabl流? 例如,

sA = RandStream('mt19937ar','Seed',7);
RandStream.setGlobalStream(sA);
A = rand(1,10);

sB = RandStream('mt19937ar','Seed',3);
RandStream.setGlobalStream(sB);
B = rand(1,10);

matlab random
1个回答
0
投票

Matlab从“已知”但复杂的函数中生成随机数,

所有的伪随机数生成器都基于确定性算法,并且都将无法通过足够具体的随机统计检验

当您更改种子编号(也可以使用rng(your_desired_seed_number)进行更改)时,它仅使用函数的另一部分,该部分与之前的随机数序列无关(至少我认为是这样),(这是一个数学问题)

但我建议使用不同的生成器以具有最大的独立随机数,

rng(5,'twister'); % you could  also use randstream instead of rng 
A=rand(1,10);
rng(3,'combRecursive');
B=rand(1,10);
© www.soinside.com 2019 - 2024. All rights reserved.