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

时间:2017-03-16 15:37:39

标签: matlab random

我只是想在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后创建一个新的不同的globabl流,但是在创建B之前?例如,

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

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

1 个答案:

答案 0 :(得分: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);