我只是想在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);
答案 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);